up: Chapter 17 -- 80386 Instruction Set
prev: XLAT/XLATB Table Look-up Translation

# XOR -- Logical Exclusive OR

```Opcode      Instruction      Clocks   Description

34  ib      XOR AL,imm8      2        Exclusive-OR immediate byte to AL
35  iw      XOR AX,imm16     2        Exclusive-OR immediate word to AX
35  id      XOR EAX,imm32    2        Exclusive-OR immediate dword to EAX
80  /6 ib   XOR r/m8,imm8    2/7      Exclusive-OR immediate byte to r/m
byte
81  /6 iw   XOR r/m16,imm16  2/7      Exclusive-OR immediate word to r/m
word
81  /6 id   XOR r/m32,imm32  2/7      Exclusive-OR immediate dword to r/m
dword
83  /6 ib   XOR r/m16,imm8   2/7      XOR sign-extended immediate byte
with r/m word
83  /6 ib   XOR r/m32,imm8   2/7      XOR sign-extended immediate byte
with r/m dword
30  /r      XOR r/m8,r8      2/6      Exclusive-OR byte register to r/m
byte
31  /r      XOR r/m16,r16    2/6      Exclusive-OR word register to r/m
word
31  /r      XOR r/m32,r32    2/6      Exclusive-OR dword register to r/m
dword
32  /r      XOR r8,r/m8      2/7      Exclusive-OR byte register to r/m
byte
33  /r      XOR r16,r/m16    2/7      Exclusive-OR word register to r/m
word
33  /r      XOR r32,r/m32    2/7      Exclusive-OR dword register to r/m
dword
```

## Operation

```DEST := LeftSRC XOR RightSRC
CF := 0
OF := 0
```

## Description

XOR computes the exclusive OR of the two operands. Each bit of the result is 1 if the corresponding bits of the operands are different; each bit is 0 if the corresponding bits are the same. The answer replaces the first operand.

## Flags Affected

CF := 0, OF := 0; SF, ZF, and PF as described in Appendix C; AF is undefined

## Protected Mode Exceptions

#GP(0) if the result is in a nonwritable segment; #GP(0) for an illegal memory operand effective address in the CS, DS, ES, FS, or GS segments; #SS(0) for an illegal address in the SS segment; #PF(fault-code) for a page fault