下面是我在 Commodore 64 上进行内存复制的自我修改例程。
我写了 char codes
和 number of repeats
在一个表中并用这个例程填充 screen_ram 。
我正在寻找优化建议。在这种情况下,我的优先事项是内存。
memCopy:
sourceAddress=*+1 ; mark self modifying addrres
fetchNewData:
lda data_table ; read char value into A
ldx data_table+1 ; read repeat value into x
inc sourceAddress
inc sourceAddress
cpx #00 ; if X=0
beq end ; finish copying
destination=*+1
- sta SCREEN_RAM
inc destination
dex
bne -
jmp fetchNewData
end:
rts
; data format: <char>,<number of repeats>,[<char>,<number of repeats>,...],00,00
data_table:
!by 01,03,02,02,......,00,00
最佳答案
JMP fetchNewData
-> BEQ fetchNewData
.搬家 INC sourceAddress
之后 BEQ end
并且不需要来自 CPX #0
(在 LDX
之后)。少了 3 个字节。
关于assembly - 自修改内存复制例程练习,6502 ASM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316763/