如何使用预定义的常量作为内存地址?

fro*_*air 1 assembly constants 6502 nes

我正在制作 NES 游戏。我正在定义几个常量来帮助我管理精灵。我有

spriteyposition = $0200
spritetile = $0201
spriteattribute = $0202
spritexposition = $0203
sprite1 = $00
sprite2 = $04
sprite3 = $08
sprite4 = $0c
sprite5 = $10
sprite6 = $14
sprite7 = $18
sprite8 = $1c
Run Code Online (Sandbox Code Playgroud)

我的用例如下:

我想修改精灵1的y位置

我愿意:

ldx sprite1
lda spriteyposition, x
adc #$8
sta spriteyposition, x
Run Code Online (Sandbox Code Playgroud)

在我的用例中 spriteyposition 应该是一个内存指针,但我有一种感觉,汇编程序将其视为常规数字

我如何将 spriteyposition 称为内存地址而不是数字?

小智 5

在我的用例中spriteyposition应该是一个内存指针,但我有一种感觉,汇编程序将它视为一个常规数字

你的感觉是不对的。此代码组装为预期的操作码 BD ( LDA ABS,x) - 没有IMM,x寻址模式。

不正确的是

ldx sprite1
Run Code Online (Sandbox Code Playgroud)

sprite1被定义为$00,所以这个端部向上与所述地址的值加载X $0000。你想要的是ldx #sprite1.