乘法指令
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