TEST - 邏輯比較

操作碼

指令

說明

A8 ib

TEST AL,imm8

imm8 同 AL 進行“與”運算;根據結果設定 SF、ZF、PF

A9 iw

TEST AX,imm16

imm16 同 AX 進行“與”運算;根據結果設定 SF、ZF、PF

A9 id

TEST EAX,imm32

imm32 同 EAX 進行“與”運算;根據結果設定 SF、ZF、PF

F6 /0 ib

TEST r/m8,imm8

imm8r/m8 進行“與”運算;根據結果設定 SF、ZF、PF

F7 /0 iw

TEST r/m16,imm16

imm16r/m16 進行“與”運算;根據結果設定 SF、ZF、PF

F7 /0 id

TEST r/m32,imm32

imm32r/m32 相“與”;根據結果設定 SF、ZF、PF

84 /r

TEST r/m8,r8

r8r/m8 相“與”;根據結果設定 SF、ZF、PF

85 /r

TEST r/m16,r16

r16r/m16 進行“與”運算;根據結果設定 SF、ZF、PF

85 /r

TEST r/m32,r32

r32r/m32 進行“與”運算;根據結果設定 SF、ZF、PF

說明

計算第一個運算元(源運算元 1)與第二個運算元(源運算元 2)的逐位邏輯“與”,並根據結果設定 SF、ZF 及 PF 狀態標誌。然後丟棄結果。

操作

TEMP SRC1 AND SRC2;
SF MSB(TEMP);
IF TEMP 0
THEN ZF 1;
ELSE ZF 0;
FI:
PF BitwiseXNOR(TEMP[0:7]);
CF 0;
OF 0;
(*AF is Undefined*)

影響的標誌

OF 與 CF 標誌清除為 0。SF、ZF 及 PF 標誌根據結果設定(請參閱上面的“操作”部分)。AF 標誌的狀態未定義。

保護模式異常

#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) - 如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。