嗨,需要一点帮助了解摩托罗拉的汇编程序

时间:2013-04-25 03:52:25

标签: assembly motorola 68000

如果我有:

0000 3304    alpha:    dc.w    5,16,4,-2

我的指示是:sub.w alpha+2,D0

我的alpha是0000 33004还是00 05 00 01 00 04 FE

1 个答案:

答案 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