X86 Opcode and Instruction Reference Home

Other editions: coder64, coder, geek32, geek64, geek

one-byte opcodes index:

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

two-byte opcodes (0F..) index:

00 01 02 03 06 08 09 0B 0D 10 11 12 13 14 15 16 17 18 1F 20 21 22 23 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 38 3A 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE
pf 0F po so o proc st m rl x mnemonic op1 op2 op3 op4 iext tested f modif f def f undef f f values description, notes                                                  
00 r L ADD r/m8 r8 o..szapc o..szapc Add
01 r L ADD r/m16/32 r16/32 o..szapc o..szapc Add
02 r ADD r8 r/m8 o..szapc o..szapc Add
03 r ADD r16/32 r/m16/32 o..szapc o..szapc Add
04 ADD AL imm8 o..szapc o..szapc Add
05 ADD eAX imm16/32 o..szapc o..szapc Add
06 PUSH ES Push Word, Doubleword or Quadword Onto the Stack
07 POP ES Pop a Value from the Stack
08 r L OR r/m8 r8 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
09 r L OR r/m16/32 r16/32 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
0A r OR r8 r/m8 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
0B r OR r16/32 r/m16/32 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
0C OR AL imm8 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
0D OR eAX imm16/32 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
0E PUSH CS Push Word, Doubleword or Quadword Onto the Stack
0F 02+ Two-byte Instructions
10 r L ADC r/m8 r8 .......c o..szapc o..szapc Add with Carry
11 r L ADC r/m16/32 r16/32 .......c o..szapc o..szapc Add with Carry
12 r ADC r8 r/m8 .......c o..szapc o..szapc Add with Carry
13 r ADC r16/32 r/m16/32 .......c o..szapc o..szapc Add with Carry
14 ADC AL imm8 .......c o..szapc o..szapc Add with Carry
15 ADC eAX imm16/32 .......c o..szapc o..szapc Add with Carry
16 PUSH SS Push Word, Doubleword or Quadword Onto the Stack
17 POP SS Pop a Value from the Stack
18 r L SBB r/m8 r8 .......c o..szapc o..szapc Integer Subtraction with Borrow
19 r L SBB r/m16/32 r16/32 .......c o..szapc o..szapc Integer Subtraction with Borrow
1A r SBB r8 r/m8 .......c o..szapc o..szapc Integer Subtraction with Borrow
1B r SBB r16/32 r/m16/32 .......c o..szapc o..szapc Integer Subtraction with Borrow
1C SBB AL imm8 .......c o..szapc o..szapc Integer Subtraction with Borrow
1D SBB eAX imm16/32 .......c o..szapc o..szapc Integer Subtraction with Borrow
1E PUSH DS Push Word, Doubleword or Quadword Onto the Stack
1F POP DS Pop a Value from the Stack
20 r L AND r/m8 r8 o..szapc o..sz.pc .....a.. o......c Logical AND
21 r L AND r/m16/32 r16/32 o..szapc o..sz.pc .....a.. o......c Logical AND
22 r AND r8 r/m8 o..szapc o..sz.pc .....a.. o......c Logical AND
23 r AND r16/32 r/m16/32 o..szapc o..sz.pc .....a.. o......c Logical AND
24 AND AL imm8 o..szapc o..sz.pc .....a.. o......c Logical AND
25 AND eAX imm16/32 o..szapc o..sz.pc .....a.. o......c Logical AND
26 ES ES ES segment override prefix
26 P4+ undefined (use with any branch instruction is reserved)
27 DAA AL .....a.c o..szapc ...szapc o....... Decimal Adjust AL after Addition
28 r L SUB r/m8 r8 o..szapc o..szapc Subtract
29 r L SUB r/m16/32 r16/32 o..szapc o..szapc Subtract
2A r SUB r8 r/m8 o..szapc o..szapc Subtract
2B r SUB r16/32 r/m16/32 o..szapc o..szapc Subtract
2C SUB AL imm8 o..szapc o..szapc Subtract
2D SUB eAX imm16/32 o..szapc o..szapc Subtract
2E CS CS CS segment override prefix
2E P4+ NTAKEN Branch not taken prefix (used only with Jcc instructions)
2F DAS AL .....a.c o..szapc ...szapc o....... Decimal Adjust AL after Subtraction
30 r L XOR r/m8 r8 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
31 r L XOR r/m16/32 r16/32 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
32 r XOR r8 r/m8 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
33 r XOR r16/32 r/m16/32 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
34 XOR AL imm8 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
35 XOR eAX imm16/32 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
36 SS SS SS segment override prefix
36 P4+ undefined (use with any branch instruction is reserved)
37 AAA AL AH .....a.. o..szapc .....a.c o..sz.p. ASCII Adjust After Addition
38 r CMP r/m8 r8 o..szapc o..szapc Compare Two Operands
39 r CMP r/m16/32 r16/32 o..szapc o..szapc Compare Two Operands
3A r CMP r8 r/m8 o..szapc o..szapc Compare Two Operands
3B r CMP r16/32 r/m16/32 o..szapc o..szapc Compare Two Operands
3C CMP AL imm8 o..szapc o..szapc Compare Two Operands
3D CMP eAX imm16/32 o..szapc o..szapc Compare Two Operands
3E DS DS DS segment override prefix
3E P4+ TAKEN Branch taken prefix (used only with Jcc instructions)
3F AAS AL AH .....a.. o..szapc .....a.c o..sz.p. ASCII Adjust AL After Subtraction
40+r INC r16/32 o..szap. o..szap. Increment by 1
48+r DEC r16/32 o..szap. o..szap. Decrement by 1
50+r PUSH r16/32 Push Word, Doubleword or Quadword Onto the Stack
58+r POP r16/32 Pop a Value from the Stack
60 01+ PUSHA AX CX DX ... Push All General-Purpose Registers
60 03+ PUSHA AX CX DX ... Push All General-Purpose Registers
PUSHAD EAX ECX EDX ...
61 01+ POPA DI SI BP ... Pop All General-Purpose Registers
61 03+ POPA DI SI BP ... Pop All General-Purpose Registers
POPAD EDI ESI EBP ...
62 r 01+ f BOUND r16/32 m16/32&16/32 eFlags ..i..... ..i..... ..i..... Check Array Index Against Bounds
63 r 02+ ARPL r/m16 r16 ....z... ....z... Adjust RPL Field of Segment Selector
64 03+ FS FS FS segment override prefix
64 P4+ undefined (used only with Jcc instructions)
64 P4+ U1 ALTER Alternating branch prefix (used only with Jcc instructions)
65 03+ GS GS GS segment override prefix
65 P4+ undefined (used only with Jcc instructions)
66 no mnemonic Operand-size override prefix
66 P4+ M no mnemonic sse2 Precision-size override prefix
67 no mnemonic Address-size override prefix
68 01+ PUSH imm16/32 Push Word, Doubleword or Quadword Onto the Stack
69 01+ IMUL r16/32 r/m16/32 imm16/32 o..szapc o......c ...szap. Signed Multiply
6A 01+ PUSH imm8 Push Word, Doubleword or Quadword Onto the Stack
6B 01+ IMUL r16/32 r/m16/32 imm8 o..szapc o......c ...szap. Signed Multiply
6C 01+ f1 INS m8 DX .d...... Input from Port to String
INSB m8 DX
6D 01+ f1 INS m16 DX .d...... Input from Port to String
INSW m16 DX
6D 03+ f1 INS m16/32 DX .d...... Input from Port to String
INSD m32 DX
6E 01+ f1 OUTS DX m8 .d...... Output String to Port
OUTSB DX m8
6F 01+ f1 OUTS DX m16 .d...... Output String to Port
OUTSW DX m16
6F 03+ f1 OUTS DX m16/32 .d...... Output String to Port
OUTSD DX m32
70 JO rel8 o....... Jump short if overflow (OF=1)
71 JNO rel8 o....... Jump short if not overflow (OF=0)
72 JB rel8 .......c Jump short if below/not above or equal/carry (CF=1)
JNAE rel8
JC rel8
73 JNB rel8 .......c Jump short if not below/above or equal/not carry (CF=0)
JAE rel8
JNC rel8
74 JZ rel8 ....z... Jump short if zero/equal (ZF=0)
JE rel8
75 JNZ rel8 ....z... Jump short if not zero/not equal (ZF=1)
JNE rel8
76 JBE rel8 ....z..c Jump short if below or equal/not above (CF=1 AND ZF=1)
JNA rel8
77 JNBE rel8 ....z..c Jump short if not below or equal/above (CF=0 AND ZF=0)
JA rel8
78 JS rel8 ...s.... Jump short if sign (SF=1)
79 JNS rel8 ...s.... Jump short if not sign (SF=0)
7A JP rel8 ......p. Jump short if parity/parity even (PF=1)
JPE rel8
7B JNP rel8 ......p. Jump short if not parity/parity odd
JPO rel8
7C JL rel8 o..s.... Jump short if less/not greater (SF!=OF)
JNGE rel8
7D JNL rel8 o..s.... Jump short if not less/greater or equal (SF=OF)
JGE rel8
7E JLE rel8 o..sz... Jump short if less or equal/not greater ((ZF=1) OR (SF!=OF))
JNG rel8
7F JNLE rel8 o..sz... Jump short if not less nor equal/greater ((ZF=0) AND (SF=OF))
JG rel8
80 0 L ADD r/m8 imm8 o..szapc o..szapc Add
80 1 L OR r/m8 imm8 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
80 2 L ADC r/m8 imm8 .......c o..szapc o..szapc Add with Carry
80 3 L SBB r/m8 imm8 .......c o..szapc o..szapc Integer Subtraction with Borrow
80 4 L AND r/m8 imm8 o..szapc o..sz.pc .....a.. o......c Logical AND
80 5 L SUB r/m8 imm8 o..szapc o..szapc Subtract
80 6 L XOR r/m8 imm8 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
80 7 CMP r/m8 imm8 o..szapc o..szapc Compare Two Operands
81 0 L ADD r/m16/32 imm16/32 o..szapc o..szapc Add
81 1 L OR r/m16/32 imm16/32 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
81 2 L ADC r/m16/32 imm16/32 .......c o..szapc o..szapc Add with Carry
81 3 L SBB r/m16/32 imm16/32 .......c o..szapc o..szapc Integer Subtraction with Borrow
81 4 L AND r/m16/32 imm16/32 o..szapc o..sz.pc .....a.. o......c Logical AND
81 5 L SUB r/m16/32 imm16/32 o..szapc o..szapc Subtract
81 6 L XOR r/m16/32 imm16/32 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
81 7 CMP r/m16/32 imm16/32 o..szapc o..szapc Compare Two Operands
82 0 L ADD r/m8 imm8 o..szapc o..szapc Add
82 1 L OR r/m8 imm8 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
82 2 L ADC r/m8 imm8 .......c o..szapc o..szapc Add with Carry
82 3 L SBB r/m8 imm8 .......c o..szapc o..szapc Integer Subtraction with Borrow
82 4 L AND r/m8 imm8 o..szapc o..sz.pc .....a.. o......c Logical AND
82 5 L SUB r/m8 imm8 o..szapc o..szapc Subtract
82 6 L XOR r/m8 imm8 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
82 7 CMP r/m8 imm8 o..szapc o..szapc Compare Two Operands
83 0 L ADD r/m16/32 imm8 o..szapc o..szapc Add
83 1 03+ L OR r/m16/32 imm8 o..szapc o..sz.pc .....a.. o......c Logical Inclusive OR
83 2 L ADC r/m16/32 imm8 .......c o..szapc o..szapc Add with Carry
83 3 L SBB r/m16/32 imm8 .......c o..szapc o..szapc Integer Subtraction with Borrow
83 4 03+ L AND r/m16/32 imm8 o..szapc o..sz.pc .....a.. o......c Logical AND
83 5 L SUB r/m16/32 imm8 o..szapc o..szapc Subtract
83 6 03+ L XOR r/m16/32 imm8 o..szapc o..sz.pc .....a.. o......c Logical Exclusive OR
83 7 CMP r/m16/32 imm8 o..szapc o..szapc Compare Two Operands
84 r TEST r/m8 r8 o..szapc o..sz.pc .....a.. o......c Logical Compare
85 r TEST r/m16/32 r16/32 o..szapc o..sz.pc .....a.. o......c Logical Compare
86 r L XCHG r8 r/m8 Exchange Register/Memory with Register
87 r L XCHG r16/32 r/m16/32 Exchange Register/Memory with Register
88 r MOV r/m8 r8 Move
89 r MOV r/m16/32 r16/32 Move
8A r MOV r8 r/m8 Move
8B r MOV r16/32 r/m16/32 Move
8C r MOV r/m16/32 Sreg Move
8D r LEA r16/32 m Load Effective Address
8E r MOV Sreg r/m16/32 Move
8F 0 POP r/m16/32 Pop a Value from the Stack
90+r XCHG r16/32 eAX Exchange Register/Memory with Register
90 NOP No Operation
F3 90 D2 no mnemonic nop No Operation
F3 90 P4+ PAUSE sse2 Spin Loop Hint
98 CBW AH AL Convert Byte to Word
98 03+ CWDE EAX AX Convert Word to Doubleword
99 CWD DX AX Convert Word to Doubleword
99 03+ CDQ EDX EAX Convert Doubleword to Quadword
9A CALLF ptr16:16/32 Call Procedure
9B FWAIT 0123 0123 Check pending unmasked floating-point exceptions
WAIT
9B no mnemonic 0123 0123 Wait Prefix
9C PUSHF Flags odiszapc Push rFLAGS Register onto the Stack
9C 03+ PUSHF Flags odiszapc Push rFLAGS Register onto the Stack
PUSHFD EFlags
9D POPF Flags odiszapc odiszapc Pop Stack into rFLAGS Register
9D 03+ POPF Flags odiszapc odiszapc Pop Stack into rFLAGS Register
POPFD EFlags
9E D SAHF AH ...szapc ...szapc Store AH into Flags
9F D LAHF AH ...szapc Load Status Flags into AH Register
A0 MOV AL moffs8 Move
A1 MOV eAX moffs16/32 Move
A2 MOV moffs8 AL Move
A3 MOV moffs16/32 eAX Move
A4 MOVS m8 m8 .d...... Move Data from String to String
MOVSB m8 m8
A5 MOVS m16 m16 .d...... Move Data from String to String
MOVSW m16 m16
A5 03+ MOVS m16/32 m16/32 .d...... Move Data from String to String
MOVSD m32 m32
A6 CMPS m8 m8 .d...... o..szapc o..szapc Compare String Operands
CMPSB m8 m8
A7 CMPS m16 m16 .d...... o..szapc o..szapc Compare String Operands
CMPSW m16 m16
A7 03+ CMPS m16/32 m16/32 .d...... o..szapc o..szapc Compare String Operands
CMPSD m32 m32
A8 TEST AL imm8 o..szapc o..sz.pc .....a.. o......c Logical Compare
A9 TEST eAX imm16/32 o..szapc o..sz.pc .....a.. o......c Logical Compare
AA STOS m8 AL .d...... Store String
STOSB m8 AL
AB STOS m16 AX .d...... Store String
STOSW m16 AX
AB 03+ STOS m16/32 eAX .d...... Store String
STOSD m32 EAX
AC LODS AL m8 .d...... Load String
LODSB AL m8
AD LODS AX m16 .d...... Load String
LODSW AX m16
AD 03+ LODS eAX m16/32 .d...... Load String
LODSD EAX m32
AE SCAS m8 AL .d...... o..szapc o..szapc Scan String
SCASB m8 AL
AF SCAS m16 AX .d...... o..szapc o..szapc Scan String
SCASW m16 AX
AF 03+ SCAS m16/32 eAX .d...... o..szapc o..szapc Scan String
SCASD m32 EAX
B0+r MOV r8 imm8 Move
B8+r MOV r16/32 imm16/32 Move
C0 0 01+ ROL r/m8 imm8 o..szapc o..szapc o....... Rotate
C0 1 01+ ROR r/m8 imm8 o..szapc o..szapc o....... Rotate
C0 2 01+ RCL r/m8 imm8 .......c o..szapc o..szapc o....... Rotate
C0 3 01+ RCR r/m8 imm8 .......c o..szapc o..szapc o....... Rotate
C0 4 01+ SHL r/m8 imm8 o..szapc o..sz.pc o....a.c Shift
SAL r/m8 imm8
C0 5 01+ SHR r/m8 imm8 o..szapc o..sz.pc o....a.c Shift
C0 6 01+ U3 SAL r/m8 imm8 o..szapc o..sz.pc o....a.c Shift
SHL r/m8 imm8
C0 7 01+ SAR r/m8 imm8 o..szapc o..sz.pc o....a.. Shift
C1 0 01+ ROL r/m16/32 imm8 o..szapc o..szapc o....... Rotate
C1 1 01+ ROR r/m16/32 imm8 o..szapc o..szapc o....... Rotate
C1 2 01+ RCL r/m16/32 imm8 .......c o..szapc o..szapc o....... Rotate
C1 3 01+ RCR r/m16/32 imm8 .......c o..szapc o..szapc o....... Rotate
C1 4 01+ SHL r/m16/32 imm8 o..szapc o..sz.pc o....a.c Shift
SAL r/m16/32 imm8
C1 5 01+ SHR r/m16/32 imm8 o..szapc o..sz.pc o....a.c Shift
C1 6 01+ U3 SAL r/m16/32 imm8 o..szapc o..sz.pc o....a.c Shift
SHL r/m16/32 imm8
C1 7 01+ SAR r/m16/32 imm8 o..szapc o..sz.pc o....a.. Shift
C2 RETN imm16 Return from procedure
C3 RETN Return from procedure
C4 r LES ES r16/32 m16:16/32 Load Far Pointer
C5 r LDS DS r16/32 m16:16/32 Load Far Pointer
C6 0 MOV r/m8 imm8 Move
C7 0 MOV r/m16/32 imm16/32 Move
C8 01+ ENTER eBP imm16 imm8 Make Stack Frame for Procedure Parameters
C9 01+ LEAVE eBP High Level Procedure Exit
CA f RETF imm16 Return from procedure
CB f RETF Return from procedure
CC f INT 3 eFlags ..i..... ..i..... ..i..... Call to Interrupt Procedure
CD f INT imm8 eFlags ..i..... ..i..... ..i..... Call to Interrupt Procedure
CE f INTO eFlags o....... ..i..... ..i..... ..i..... Call to Interrupt Procedure
CF f IRET Flags odiszapc odiszapc Interrupt Return
CF 03+ f IRETD EFlags odiszapc odiszapc Interrupt Return
D0 0 ROL r/m8 1 o..szapc o..szapc Rotate
D0 1 ROR r/m8 1 o..szapc o..szapc Rotate
D0 2 RCL r/m8 1 .......c o..szapc o..szapc Rotate
D0 3 RCR r/m8 1 .......c o..szapc o..szapc Rotate
D0 4 SHL r/m8 1 o..szapc o..sz.pc .....a.. Shift
SAL r/m8 1
D0 5 SHR r/m8 1 o..szapc o..sz.pc .....a.. Shift
D0 6 U3 SAL r/m8 1 o..szapc o..sz.pc .....a.. Shift
SHL r/m8 1
D0 7 SAR r/m8 1 o..szapc o..sz.pc .....a.. Shift
D1 0 ROL r/m16/32 1 o..szapc o..szapc Rotate
D1 1 ROR r/m16/32 1 o..szapc o..szapc Rotate
D1 2 RCL r/m16/32 1 .......c o..szapc o..szapc Rotate
D1 3 RCR r/m16/32 1 .......c o..szapc o..szapc Rotate
D1 4 SHL r/m16/32 1 o..szapc o..sz.pc .....a.. Shift
SAL r/m16/32 1
D1 5 SHR r/m16/32 1 o..szapc o..sz.pc .....a.. Shift
D1 6 U3 SAL r/m16/32 1 o..szapc o..sz.pc .....a.. Shift
SHL r/m16/32 1
D1 7 SAR r/m16/32 1 o..szapc o..sz.pc .....a.. Shift
D2 0 ROL r/m8 CL o..szapc o..szapc o...