param word 0
function
...
lda param,x
scr1 byte "some text"
byte 0
那么如何将“scr1”传递给“param”呢?我知道这是一个内存地址,所以它不适合 1 字节的寄存器。最好的方法是什么?
编辑:
感谢您的回答!下面发布的解决方案效果很好,但这同时使用了 X 和 Y 寄存器。如果“函数”调用依赖于 X 或 Y 的 KERNAL 例程,或者我自己的代码需要 X 来完成某些事情,该怎么办?在这种情况下,我猜这不会按预期工作?
我对汇编程序完全陌生,所以我对很多事情感到困惑。
基本上我想传递地址,因为我想避免代码重复。我有一个简单的函数,可以像这样在屏幕上打印一个字符串:
ldx #$00
copy_text
lda scr1,x
beq done
sta screen_start,x
inx
bne copy_text
done
rts
但这仅适用于 scr1。如果想打印其他东西,我需要复制似乎很浪费的代码。
这在汇编程序中可以接受吗?我的意思是,在 C 或任何其他语言中,您只需编写一个可重用的函数或方法。但是在汇编程序中这似乎很难做到,因为只有 3 个寄存器,它们被很多东西使用。
克服此限制的最佳方法是什么?