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