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

时间:2019-06-22 19:52:27

标签: 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

我的用例如下:

我要修改图片1的y位置

我这样做:

ldx sprite1
lda spriteyposition, x
adc #$8
sta spriteyposition, x

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

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

1 个答案:

答案 0 :(得分:4)

  

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

您的感觉不正确。此代码将组装到预期的操作码BD(spriteyposition)上-没有LDA ABS,x寻址模式。

不正确的是

IMM,x

ldx sprite1 被定义为sprite1,因此最终以地址$00的值加载X。您想要的是$0000