assembly - 自修改内存复制例程练习,6502 ASM

标签 assembly 6502

下面是我在 Commodore 64 上进行内存复制的自我修改例程。

我写了 char codesnumber 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/

相关文章:

c++ - 如何在汇编程序中增加指针字母?

assembly - = 和 := 之间的区别

assembly - 汇编 6502 中的 256 和 64 位数字

linux - NASM "error: comma, colon, decorator or end of line expected after operand"

c++ - 在 C++ 程序中使用 _asm 代码是否有所不同

c - 堆栈指针从寄存器读取错误值

assembly - 如何用bios中断13h写入硬盘

python - 想要将旧的 6502 源代码 HEX 行转换为 .byte $00 行

assembly - 6502汇编器随机数问题

assembly - 6502 的快速有符号 16 位除以 7