算術指令

算術指令

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