2

我正在尝试用 6502 处理器中先前操作的结果填充 100 个内存位置。

如何增加存储在寄存器中的内存位置并将结果存储在其中?

    *=0300

dato1 = $0A
dato2 = $0B
res = $0C
    LDA #4
    STA dato1
    LDA #5
    STA dato2
    ADC dato1
        STA res
    LDX #100
    LDY #res    
LOOP
    INY
    ; i have to fill 0C position and next 100 positions in this loop
    DEX
    BNE LOOP
4

1 回答 1

1

6502 有一个 16 位地址总线,但只有 8 位累加器/变址寄存器,因此指针不能放在单个寄存器中。为了绕过这个限制,6502 程序员通常将 little-endian 指针存储在零页内存中,然后使用零页间接索引操作来操作该地址偏移处的值。这里以数字 1,2,3,4,5,...,100 填充地址 0x0200 到 0x0263 的示例,方法是将值 0x0200 在零页地址 0x00 处进行小端编码,然后遍历该地址使用 y 寄存器指向的 100 个字节。

LDA #$00
STA $00
LDA #$02
STA $01
LDY #$00
LDX #$01

loop:
CPY #$63
BEQ end
TXA
STA ($00),Y
INX
INY
JMP loop

end:
BRK
于 2014-05-03T07:18:13.073 回答