Assembly 用结果填充100个内存位置
我正试图用6502处理器上一次操作的结果填充100个内存位置 如何增加存储在寄存器中的内存位置并将结果存储在寄存器中Assembly 用结果填充100个内存位置,assembly,6502,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 0
*=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
6502有一个16位地址总线,但只有8位累加器/索引寄存器,因此指针不能装入单个寄存器。为了克服这一限制,6502程序员通常在零页内存中存储小的endian指针,然后使用零页间接索引操作来操作该地址偏移量处的值。这里是一个示例,通过在零页地址0x00处使用小端编码的值0x0200,然后使用y寄存器在该地址指向的100字节上迭代,用数字1,2,3,4,5,…,100填充地址0x0200到0x0263
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
似乎可以使用
绝对,Y
寻址模式(请参阅您最喜欢的6502指令集参考和/或汇编程序手册)。或者,如果性能很重要,您可以切换寄存器并使用Zeropage,X
寻址。谢谢,我终于做到了!与斯塔雷斯,Y