标签: 6502

比较击键 - 装配CCS64

我想比较汇编中的击键(CCS64).如果我连续输入相同的键我想做一些例子:A A=这样做

但如果我输入这个:A B=做别的事

建议?

assembly c64 6502 6510

4
推荐指数
1
解决办法
1737
查看次数

6502中有哪些使用控制流的方法?

我试图了解6502组装中的控制流程。

说我有以下代码:

    ControlFlow:
      lda mem
      cmp #1
      bne .sub_one

      cmp #2
      bne .sub_two

      .sub_one:
        ; sub routine one goes here
        jmp .done ; <-------------- without this jmp, .sub_two will execute

      .sub_two:
       ; sub routine two goes here

      .done:

      rts
Run Code Online (Sandbox Code Playgroud)

就个人而言,我很喜欢switch语句或其他控制流结构。上面的JMP也与我有关。似乎有一种更好的方法来处理多种情况,而无需使用此类意大利面条式代码。

assembly 6502 retro-computing

4
推荐指数
1
解决办法
2186
查看次数

6502相对地址模式换行

阅读6502上的文档,我无法在任何地方找到答案.使用相对寻址时可以换行.但是有可能包裹两端吗?我猜这是可能的,但不太可能.

当我的意思是两端,我的意思是我知道你可以从高PC到低PC.但是你也可以从低PC到高PC吗?

assembly 6502

4
推荐指数
1
解决办法
1005
查看次数

Commodore PET BASIC从$ 00C2开始组装什么?

我发现PET的零页内存映射声称零页面地址范围$00C2..$00D9用于静态数据,例如http://www.classiccmp.org/dunfield/pet/petmem.txt说:

 RIDATA 00C2        Cassette Temp (64#00AA) read flags: 0=scan,
                    1-15=count, $40=load, $80=end of tape marker
 RIPRTY 00C3        Cassette Short Cnt (64#00AB): counter of seconds
                    before tape write / checksum
 PNT    00C4-00C5   Pointer: Current Screen Line Address
 PNTR   00C6        Cursor Column on Current Line
 SAL    00C7-00C8   Pointer: Tape Buffer/ Screen Scrolling
 EAL    00C9-00CA   Tape End Addresses/End of Program
 CMP0   00CB-00CC   Tape Timing Constants
 QTSW   00CD        Flag: Editor in Quote Mode, $00 = NO
 BITTS  00CE        Cassette Temp …
Run Code Online (Sandbox Code Playgroud)

assembly jit 6502 commodore

4
推荐指数
1
解决办法
626
查看次数

为什么ASM 6502中的条件分支限制为128个字节

例程必须在发出的分支指令的128或-127字节内的硬件原因是什么?

assembly branch 6502

4
推荐指数
2
解决办法
965
查看次数

DASM汇编器中的ASCII至C64屏幕代码

我正在通过C64仿真器学习6502 micro的装配。当前正在尝试将字符串输出到屏幕。这是我的代码:

    processor 6502
    org $1000

    ldx #$00    ;using x register as column counter
print:
    lda message,x;load a with x bit from message
    sta $0400,x ;store this bit in row 0 col 0 address
    inx         ;x++
    cpx #$05    ;is x >= 5?
    bne print   ;if not x >= 5, loop again
    rts         ;return from program


message dc "HELLO"
hexmsg dc $08,$05,$0c,$0c,$0f
Run Code Online (Sandbox Code Playgroud)

因为我的编辑器(胜利10上的notepad ++)使用类似ascii的字符代码,所以"HELLO"输入message是48 45 4C 4C 4F。这将在屏幕的左上角提供以下输出: 在此处输入图片说明

我想这是正确的,请看这里的commodore屏幕代码表。

如果将第6行更改为,lda hexmsg,x那么我将得到确切的字眼HELLO。 …

string assembly 6502 commodore

4
推荐指数
2
解决办法
1026
查看次数

6502间接访问模式

我的问题是关于6502汇编语言的。我正在尝试使用此网站https://skilldrick.github.io/easy6502/进行学习。

关于寻址模式的主题。我不了解间接寻址模式。请参见下面的源代码示例。

LDA #$01
STA $f0
LDA #$cc
STA $f1
JMP ($00f0) ;dereferences to $cc01
Run Code Online (Sandbox Code Playgroud)

为什么JMP ($00f0)取消引用到$cc01而不是$01cc

我的记忆看起来像这样

00f0: 01 cc 00 00 00 00 00 00 00 00 00 00 00 00 84

在这里,您看到00f0以开始,01然后是跟随,cc因此对我来说,跳转指令将取消引用是更合乎逻辑的$01cc,但是为什么这会以某种方式逆转?

6502

4
推荐指数
1
解决办法
187
查看次数

6502 汇编程序 - RTS 命令和堆栈

我必须回答以下有关6502汇编语言的问题:

“在堆栈上,有以下值(顶部元素在前):0x01, 0x02, 0x03, 0x04, 0x05, 0x06 地址0xc000是指令jsr 0xABCD。在获取/执行周期后,哪个值将存储在程序计数器中,堆栈的顶部元素是什么?”

我知道程序计数器将为0xABCD,但我对堆栈元素感到困惑。我知道在 6502 架构中,栈是从上到下(从0x01FF0x0100)增长的。所以,我假设,堆栈指针指向 element 0x01,对吗?

现在,返回地址应该是program counter + 3,因为有next命令,所以我会说,0xc003将被压入堆栈,但以小端顺序,因此c0将是顶部元素。那是对的吗?

assembly 6502 subroutine

3
推荐指数
1
解决办法
2315
查看次数

DASM 指令/伪指令

我正在查看文档,发现有一些伪操作让我困惑,它们是DVLISTXXX

DV说就像DC但与 一起使用EQM,我已经搞乱了它,但我没有注意到任何区别,我试图找到任何例子,但找不到任何例子。

LIST并且XXX,我也不确定这些是如何工作的。

assembly 6502

3
推荐指数
1
解决办法
181
查看次数

正在将#$ FF加载到A中,并存储在地址$ 0000中不起作用

我正在为NES学习程序集,并且编写了以下程序:

    .org $8000 ; set code to start of rom
Start:         ; make a label called start
    lda #$ff   ; set acc to 0xff
    sta $0000  ; store address 0x0000 to acc which is 0xff
    jmp Start  ; jump to label start
Run Code Online (Sandbox Code Playgroud)

我用NESASM3编译了程序,编译成功,然后在仿真器中运行它,当我转到仿真器中的内存查看器时,查看地址$ 0000,它是01,而不是FF,就像我编程的那样。

memory assembly 6502 nes

3
推荐指数
1
解决办法
94
查看次数

标签 统计

6502 ×10

assembly ×9

commodore ×2

6510 ×1

branch ×1

c64 ×1

jit ×1

memory ×1

nes ×1

retro-computing ×1

string ×1

subroutine ×1