SETcc - 按條件設定位元組

操作碼

指令

說明

0F 97

SETA r/m8

高於(CF=0 且 ZF=0)時設定位元組

0F 93

SETAE r/m8

高於或等於 (CF=0)時設定位元組

0F 92

SETB r/m8

低於 (CF=1) 時設定位元組

0F 96

SETBE r/m8

低於或等於(CF=1 或 ZF=1)時設定位元組

0F 92

SETC r/m8

進位 (CF=1) 時設定位元組

0F 94

SETE r/m8

等於 (ZF=1) 時設定位元組

0F 9F

SETG r/m8

大於(ZF=0 且 SF=OF)時設定位元組

0F 9D

SETGE r/m8

大於或等於 (SF=OF) 時設定位元組

0F 9C

SETL r/m8

小於 (SF<>OF) 時設定位元組

0F 9E

SETLE r/m8

小於或等於(ZF=1 或 SF<>OF)時設定位元組

0F 96

SETNA r/m8

不高於(CF=1 或 ZF=1)時設定位元組

0F 92

SETNAE r/m8

不高於或等於 (CF=1) 時設定位元組

0F 93

SETNB r/m8

不低於 (CF=0) 時設定位元組

0F 97

SETNBE r/m8

不低於或等於(CF=0 且 ZF=0)時設定位元組

0F 93

SETNC r/m8

無進位 (CF=0) 時設定位元組

0F 95

SETNE r/m8

等於 (ZF=0) 時設定位元組

0F 9E

SETNG r/m8

不大於(ZF=1 或 SF<>OF)時設定位元組

0F 9C

SETNGE r/m8

不大於或等於 (SF<>OF) 時設定位元組

0F 9D

SETNL r/m8

不小於 (SF=OF) 時設定位元組

0F 9F

SETNLE r/m8

不小於或等於(ZF=0 且 SF=OF)時設定位元組

0F 91

SETNO r/m8

不上溢 (OF=0) 時設定位元組

0F 9B

SETNP r/m8

奇校驗 (PF=0) 時設定位元組

0F 99

SETNS r/m8

正數 (SF=0) 時設定位元組

0F 95

SETNZ r/m8

不為零 (ZF=0) 時設定位元組

0F 90

SETO r/m8

上溢 (OF=1) 時設定位元組

0F 9A

SETP r/m8

偶校驗 (PF=1) 時設定位元組

0F 9A

SETPE r/m8

偶校驗 (PF=1) 時設定位元組

0F 9B

SETPO r/m8

奇校驗 (PF=0) 時設定位元組

0F 98

SETS r/m8

負數 (SF=1) 時設定位元組

0F 94

SETZ r/m8

為零 (ZF=1) 時設定位元組

說明

根據 EFLAGS 暫存器中狀態標誌(CF、SF、OF、ZF 及 PF)的設定,將目標運算元設定為 0 或 1。目標運算元指向位元組暫存器或記憶體中的位元組。條件程式碼後綴 (cc) 表示要測試的條件。

術語“高於”與“低於”與 CF 標誌關聯,它們指兩個無符號整數值之間的關係。術語“大於”與“小於”與 SF 與 OF 標誌關聯,它們指兩個有符號整數值之間的關係。

許多 SETcc 指令操作碼都有替代助記符。例如,SETG(大於時設定位元組)與 SETNLE(小於或等於時設定位元組)具有相同的操作碼,並且測試的條件也相同:ZF 等於 0 且 SF 等於 OF。提供這些替代助記符是爲了使程式碼更容易理解。在“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 1 卷附錄 B“EFLAGS 條件程式碼”中,顯示各種測試條件的替代助記符。

某些語言將邏輯一表示成所有的位都設定為 1 的整數。要獲取這種表示法,可以選擇 SETcc 指令的相反邏輯條件,然後將結果遞減。例如,要測試上溢,可以使用 SETNO 指令,然後將結果遞減。

操作

IF condition
THEN DEST 1
ELSE DEST 0;
FI;

影響的標誌

無。

保護模式異常

#GP(0) - 如果目標位於不可寫的段。如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS 或 GS 暫存器包含空的段選擇器。

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

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

實地址模式異常

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

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

虛 8086 模式異常

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

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

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