如果我有:
0000 3304 alpha: dc.w 5,16,4,-2
我的指示是:sub.w alpha+2,D0
我的alpha是0000 33004
还是00 05 00 01 00 04 FE
?
答案 0 :(得分:3)
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 <的值/ strong>,然后是 4 的值,依此类推。由于每个值都被指示为一个字,因此每当定义一个新值时,必须将该值的地址增加十六进制为两个字节/一个字的长度。
在定义了所有常量之后,以下值将存在于以下地址
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
。