CMPXCHG - Compare and Exchange |
* |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
? |
Code | Mnemonic | Description |
0F B0/ r | CMPXCHG r/m8, r8 | Compare AL with r/m8. If equal, ZF is set and r8 is loaded into r/m8. Else, clear ZF and load r/m8 into AL. |
0F B1/ r | CMPXCHG r/m16, r16 | Compare AX with r/m16. If equal, ZF is set and r16 is loaded into r/m16. Else, clear ZF and load r/m16 into AL |
0F B1/ r | CMPXCHG r/m32, r32 | Compare EAX with r/m32. If equal, ZF is set and r32 is loaded into r/m32. Else, clear ZF and load r/m32 into AL |
Operands | Bytes | Clocks | |
reg, reg | 3 | 5 | NP |
mem, reg | 3 + d(0 - 2) | 6 | NP |
ID | unaffected | DF | unaffected |
VIP | unaffected | IF | unaffected |
VIF | unaffected | TF | unaffected |
AC | unaffected | SF | sets according to the results of the comparison operation |
VM | unaffected | ZF | sets if the values in the destination operand and register AL, AX, or EAX are equal; otherwise it is cleared |
RF | unaffected | AF | sets according to the results of the comparison operation |
NT | unaffected | PF | sets according to the results of the comparison operation |
IOPL | unaffected | CF | sets according to the results of the comparison operation |
OF | sets according to the results of the comparison operation |