MUL(Un edMultiple)无符号数乘法IMUL(Sign edMultiple)带符号数乘法
乘法指令
MUL(UnsignedMultiple)无符号数乘法
IMUL(SignedMultiple)带符号数乘法
MUL无符号数乘法指令
格式为:MULSRC
执行的操作为:
字节操作数:(AX)←(AL)*(SRC)
字操作数:(DX,AX)←(AX)*(SRC)
IMUL带符号数乘法指令
格式为:IMULSRC
执行的操作为:它执行的操作与MUL相同,但必须是带符号数,而MUL是无符号数。
说明:
在乘法指令里,目的操作数必须是累加器,字运算为AX,字节运算为AL.两个8位数相
乘得到的是16位乘积存放在AX中,两个16位数相乘得到的是32位乘积,存放在DX,AX中,
其中DX放高位,AX放低位。
乘法指令对除CF和OF以外的条件码位无定义(无定义是指指令执行后这些条件码位的
状态不定)。
对于MUL指令,如果乘积的高一半为0,则CF和OF均为0;否则CF和OF均为1。
对于IMUL指令,如果乘积的高一半是低一半的符号扩展则CF和OF均为0,否则就均为1
例如
如(AL)=0B4H,(BL)=11H,求执行指令MULBL和IMULBL后的乘积值。
(AL)=0B4H为无符号数180D,带符号数的-76D,
(BL)=11H为无符号数17D,带符号数的17D.
执行MULBL的结果为:
(AX)=0BF4H=3060DCF=OF=1
执行IMULBL的结果为:
(AX)=0FAF4H=-1292DCF=0F=1
参考资料
http://home.aihua.us/asm/A2/2.33.htm
投稿