MUL - 無符號乘法

操作碼

指令

說明

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 段限制。

虛 8086 模式異常

#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。

#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。

#PF(錯誤程式碼) - 如果發生頁錯誤。

#AC(0) - 如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。