用结果填充100个内存位置

时间:2014-04-25 11:53:01

标签: assembly 6502

我试图用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

1 个答案:

答案 0 :(得分:1)

6502具有16位地址总线,但只有8位累加器/索引寄存器,因此指针不适合单个寄存器。为了解决这个限制,6502程序员通常在零页面内存中存储little-endian指针,然后使用零页面间接索引操作来处理来自该地址的偏移量的值。这里作为一个例子,通过将值0x0200以小端编码放在零页面地址0x00处,然后迭代遍历数字1,2,3,4,5,...,100来填充地址0x0200到0x0263该地址使用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