如果我有:
0000 3304 alpha: dc.w 5,16,4,-2
我的指示是:sub.w alpha+2,D0
我的阿尔法是在0000 33004
还是在00 05 00 01 00 04 FE
?
dc.w a = 定义常量字,其中 a 是要定义的值
sb.w a,b = 减字,其中 a 是源,b 是目标
操作说明
0000 3304 alpha: dc.w 5,16,4,-2
相当于:
0000 3304 alpha: dc.w 05
alpha: dc.w 16
alpha: dc.w 04
alpha: dc.w -02
再细分一下,第一条指令是从地址0000 3304开始,定义值5然后定义值16,然后定义值4等等。由于这些值中的每一个都被指示为一个字,因此每当定义一个新值时,您必须将该值的地址增加十六进制 2 以获得两个字节/一个字的长度。
常量全部定义后,以下值将存在于以下地址
0000 3304 -> 0x05
0000 3306 -> 0x10
0000 3308 -> 0x04
0000 330A -> 0xFE
指令sub.w alpha+2,D0
的意思是从 alpha (地址0000 3304
)开始移动 2 个字节,然后从数据寄存器中的值中减去该地址处的值D0
。
所以,
alpha+2
= 地址0000 33006
其值为0x10
。
无论数据寄存器中的值是什么,都要从中D0
减去。0x10