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 |