如何使用预定义的常量作为内存地址?
How to use a predefined constant as a memory address?
我正在制作 NES 游戏。我正在定义几个常量来帮助我管理精灵。我有
spriteyposition = 00
spritetile = 01
spriteattribute = 02
spritexposition = 03
sprite1 = [=10=]
sprite2 =
sprite3 =
sprite4 = [=10=]c
sprite5 =
sprite6 =
sprite7 =
sprite8 = c
我的用例如下:
我要修改精灵1的y轴位置
我愿意:
ldx sprite1
lda spriteyposition, x
adc #
sta spriteyposition, x
在我的用例中,spriteyposition 应该是一个内存指针,但我有一种感觉,汇编程序将其视为一个常规数字
如何将 spriteyposition 称为内存地址而不是数字?
In my use case spriteyposition
should be a memory pointer, but i have a feeling that the assembler is treating it as a regular number
你的感觉不对。此代码汇编为预期的操作码 BD (LDA ABS,x
)——没有 IMM,x
寻址模式。
不正确的是
ldx sprite1
sprite1
被定义为 [=15=]
,所以这最终用地址 [=16=]00
的值加载 X。你要的是ldx #sprite1
.
我正在制作 NES 游戏。我正在定义几个常量来帮助我管理精灵。我有
spriteyposition = 00
spritetile = 01
spriteattribute = 02
spritexposition = 03
sprite1 = [=10=]
sprite2 =
sprite3 =
sprite4 = [=10=]c
sprite5 =
sprite6 =
sprite7 =
sprite8 = c
我的用例如下:
我要修改精灵1的y轴位置
我愿意:
ldx sprite1
lda spriteyposition, x
adc #
sta spriteyposition, x
在我的用例中,spriteyposition 应该是一个内存指针,但我有一种感觉,汇编程序将其视为一个常规数字
如何将 spriteyposition 称为内存地址而不是数字?
In my use case
spriteyposition
should be a memory pointer, but i have a feeling that the assembler is treating it as a regular number
你的感觉不对。此代码汇编为预期的操作码 BD (LDA ABS,x
)——没有 IMM,x
寻址模式。
不正确的是
ldx sprite1
sprite1
被定义为 [=15=]
,所以这最终用地址 [=16=]00
的值加载 X。你要的是ldx #sprite1
.