操作碼 |
指令 |
說明 |
F6 /4 |
MUL r/m8 |
無符號乘法 (AX AL * r/m8) |
F7 /4 |
MUL r/m16 |
無符號乘法 (DX:AX AX * r/m16) |
F7 /4 |
MUL r/m32 |
無符號乘法 (EDX:EAX EAX * r/m32) |
對第一個運算元(目標運算元)與第二個運算元(源運算元)執行無符號乘法,結果儲存到目標運算元。目標運算元是位於 AL、AX 或 EAX 暫存器(取決於運算元的大小)中的隱式運算元;源運算元位於通用暫存器或記憶體位置。此指令的操作與結果的位置取決於操作碼與運算元大小,如下表所示。
運算元大小 |
源運算元 1 |
源運算元 2 |
目標運算元 |
位元組 |
AL |
r/m8 |
AX |
字 |
AX |
r/m16 |
DX:AX |
雙字 |
EAX |
r/m32 |
EDX:EAX |
結果儲存到暫存器 AX、暫存器對 DX:AX 或 EDX:EAX(取決於運算元大小),乘積的高位分別儲存在暫存器 AH、DX 或 EDX。如果乘積的高位均為 0,則清除 CF 與 OF 標誌;否則將它們設定為 1。
IF byte operation
THEN
AX AL * SRC
ELSE (* word or doubleword operation *)
IF OperandSize 16
THEN
DX:AX AX * SRC
ELSE (* OperandSize 32 *)
EDX:EAX EAX * SRC
FI;
FI;
如果結果的上半部分為 0,則 OF 與 CF 標誌都清除為 0;否則它們都設定為 1。SF、ZF、AF 及 PF 標誌未定義。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS 或 GS 暫存器包含空的段選擇器。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果啟用對齊檢查並在目前特權級別為 3 時進行未對齊的記憶體引用。
#GP - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS - 如果記憶體運算元有效地址超出 SS 段限制。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。