X86 Opcode and Instruction Reference Home

Other editions: coder32, coder64, 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 05 06 07 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
pf0Fposooprocstmrlxmnemonicop1op2op3op4iexttested fmodif fdef fundef ff valuesdescription, notes                                                  
00rLADD r/m8 r8o..szapco..szapcAdd
01rLADD r/m16/32/64 r16/32/64o..szapco..szapcAdd
02rADD r8 r/m8o..szapco..szapcAdd
03rADD r16/32/64 r/m16/32/64o..szapco..szapcAdd
04ADDAL imm8o..szapco..szapcAdd
05ADDrAX imm16/32o..szapco..szapcAdd
06PUSHESPush Word, Doubleword or Quadword Onto the Stack
06P4+EinvalidInvalid Instruction in 64-Bit Mode
07POPESPop a Value from the Stack
07P4+EinvalidInvalid Instruction in 64-Bit Mode
08rLOR r/m8 r8o..szapco..sz.pc.....a..o......cLogical Inclusive OR
09rLOR r/m16/32/64 r16/32/64o..szapco..sz.pc.....a..o......cLogical Inclusive OR
0ArOR r8 r/m8o..szapco..sz.pc.....a..o......cLogical Inclusive OR
0BrOR r16/32/64 r/m16/32/64o..szapco..sz.pc.....a..o......cLogical Inclusive OR
0CORAL imm8o..szapco..sz.pc.....a..o......cLogical Inclusive OR
0DORrAX imm16/32o..szapco..sz.pc.....a..o......cLogical Inclusive OR
0EPUSHCSPush Word, Doubleword or Quadword Onto the Stack
0EP4+EinvalidInvalid Instruction in 64-Bit Mode
0F02+ Two-byte Instructions
10rLADC r/m8 r8.......co..szapco..szapcAdd with Carry
11rLADC r/m16/32/64 r16/32/64.......co..szapco..szapcAdd with Carry
12rADC r8 r/m8.......co..szapco..szapcAdd with Carry
13rADC r16/32/64 r/m16/32/64.......co..szapco..szapcAdd with Carry
14ADCAL imm8.......co..szapco..szapcAdd with Carry
15ADCrAX imm16/32.......co..szapco..szapcAdd with Carry
16PUSHSSPush Word, Doubleword or Quadword Onto the Stack
16P4+EinvalidInvalid Instruction in 64-Bit Mode
17POPSSPop a Value from the Stack
17P4+EinvalidInvalid Instruction in 64-Bit Mode
18rLSBB r/m8 r8.......co..szapco..szapcInteger Subtraction with Borrow
19rLSBB r/m16/32/64 r16/32/64.......co..szapco..szapcInteger Subtraction with Borrow
1ArSBB r8 r/m8.......co..szapco..szapcInteger Subtraction with Borrow
1BrSBB r16/32/64 r/m16/32/64.......co..szapco..szapcInteger Subtraction with Borrow
1CSBBAL imm8.......co..szapco..szapcInteger Subtraction with Borrow
1DSBBrAX imm16/32.......co..szapco..szapcInteger Subtraction with Borrow
1EPUSHDSPush Word, Doubleword or Quadword Onto the Stack
1EP4+EinvalidInvalid Instruction in 64-Bit Mode
1FPOPDSPop a Value from the Stack
1FP4+EinvalidInvalid Instruction in 64-Bit Mode
20rLAND r/m8 r8o..szapco..sz.pc.....a..o......cLogical AND
21rLAND r/m16/32/64 r16/32/64o..szapco..sz.pc.....a..o......cLogical AND
22rAND r8 r/m8o..szapco..sz.pc.....a..o......cLogical AND
23rAND r16/32/64 r/m16/32/64o..szapco..sz.pc.....a..o......cLogical AND
24ANDAL imm8o..szapco..sz.pc.....a..o......cLogical AND
25ANDrAX imm16/32o..szapco..sz.pc.....a..o......cLogical AND
26ESESES segment override prefix
26P4+undefined(use with any branch instruction is reserved)
26P4+EnullNull Prefix in 64-bit Mode
27DAAAL.....a.co..szapc...szapco.......Decimal Adjust AL after Addition
27P4+EinvalidInvalid Instruction in 64-Bit Mode
28rLSUB r/m8 r8o..szapco..szapcSubtract
29rLSUB r/m16/32/64 r16/32/64o..szapco..szapcSubtract
2ArSUB r8 r/m8o..szapco..szapcSubtract
2BrSUB r16/32/64 r/m16/32/64o..szapco..szapcSubtract
2CSUBAL imm8o..szapco..szapcSubtract
2DSUBrAX imm16/32o..szapco..szapcSubtract
2ECSCSCS segment override prefix
2EP4+NTAKENBranch not taken prefix (used only with Jcc instructions)
2EP4+Eundefined(branch hint prefixes have no effect in 64-bit mode)
2EP4+EnullNull Prefix in 64-bit Mode
2FDASAL.....a.co..szapc...szapco.......Decimal Adjust AL after Subtraction
2FP4+EinvalidInvalid Instruction in 64-Bit Mode
30rLXOR r/m8 r8o..szapco..sz.pc.....a..o......cLogical Exclusive OR
31rLXOR r/m16/32/64 r16/32/64o..szapco..sz.pc.....a..o......cLogical Exclusive OR
32rXOR r8 r/m8o..szapco..sz.pc.....a..o......cLogical Exclusive OR
33rXOR r16/32/64 r/m16/32/64o..szapco..sz.pc.....a..o......cLogical Exclusive OR
34XORAL imm8o..szapco..sz.pc.....a..o......cLogical Exclusive OR
35XORrAX imm16/32o..szapco..sz.pc.....a..o......cLogical Exclusive OR
36SSSSSS segment override prefix
36P4+undefined(use with any branch instruction is reserved)
36P4+EnullNull Prefix in 64-bit Mode
37AAAALAH.....a..o..szapc.....a.co..sz.p.ASCII Adjust After Addition
37P4+EinvalidInvalid Instruction in 64-Bit Mode
38rCMP r/m8 r8o..szapco..szapcCompare Two Operands
39rCMP r/m16/32/64 r16/32/64o..szapco..szapcCompare Two Operands
3ArCMP r8 r/m8o..szapco..szapcCompare Two Operands
3BrCMP r16/32/64 r/m16/32/64o..szapco..szapcCompare Two Operands
3CCMPAL imm8o..szapco..szapcCompare Two Operands
3DCMPrAX imm16/32o..szapco..szapcCompare Two Operands
3EDSDSDS segment override prefix
3EP4+TAKENBranch taken prefix (used only with Jcc instructions)
3EP4+Eundefined(branch hint prefixes have no effect in 64-bit mode)
3EP4+EnullNull Prefix in 64-bit Mode
3FAASALAH.....a..o..szapc.....a.co..sz.p.ASCII Adjust AL After Subtraction
3FP4+EinvalidInvalid Instruction in 64-Bit Mode
40+rINC r16/32o..szap.o..szap.Increment by 1
40P4+EREXAccess to new 8-bit registers
41P4+EREX.BExtension of the r/m field, base field, or opcode reg field
42P4+EREX.XExtension of the SIB index field
43P4+EREX.XBREX.X and REX.B combination
44P4+EREX.RExtension of the ModR/M reg field
45P4+EREX.RBREX.R and REX.B combination
46P4+EREX.RXREX.R and REX.X combination
47P4+EREX.RXBREX.R, REX.X and REX.B combination
48+rDEC r16/32o..szap.o..szap.Decrement by 1
48P4+EREX.W64 Bit Operand Size
49P4+EREX.WBREX.W and REX.B combination
4AP4+EREX.WXREX.W and REX.X combination
4BP4+EREX.WXBREX.W, REX.X and REX.B combination
4CP4+EREX.WRREX.W and REX.R combination
4DP4+EREX.WRBREX.W, REX.R and REX.B combination
4EP4+EREX.WRXREX.W, REX.R and REX.X combination
4FP4+EREX.WRXBREX.W, REX.R, REX.X and REX.B combination
50+rPUSH r16/32Push Word, Doubleword or Quadword Onto the Stack
50+rP4+EPUSH r64/16Push Word, Doubleword or Quadword Onto the Stack
58+rPOP r16/32Pop a Value from the Stack
58+rP4+EPOP r64/16Pop a Value from the Stack
6001+PUSHAAXCXDX...Push All General-Purpose Registers
6003+PUSHAAXCXDX...Push All General-Purpose Registers
PUSHADEAXECXEDX...
60P4+EinvalidInvalid Instruction in 64-Bit Mode
6101+POPADISIBP...Pop All General-Purpose Registers
6103+POPADISIBP...Pop All General-Purpose Registers
POPADEDIESIEBP...
61P4+EinvalidInvalid Instruction in 64-Bit Mode
62r01+fBOUND r16/32 m16/32&16/32eFlags..i.......i.......i.....Check Array Index Against Bounds
62P4+EinvalidInvalid Instruction in 64-Bit Mode
63r02+ARPL r/m16 r16....z.......z...Adjust RPL Field of Segment Selector
63rP4+EMOVSXD r32/64 r/m32Move with Sign-Extension
6403+FSFSFS segment override prefix
64P4+undefined(used only with Jcc instructions)
64P4+U1ALTERAlternating branch prefix (used only with Jcc instructions)
64P4+Eundefined(branch hint prefixes have no effect in 64-bit mode)
6503+GSGSGS segment override prefix
65P4+undefined(used only with Jcc instructions)
66no mnemonicOperand-size override prefix
66P4+Mno mnemonicsse2Precision-size override prefix
67no mnemonicAddress-size override prefix
6801+PUSH imm16/32Push Word, Doubleword or Quadword Onto the Stack
6901+IMUL r16/32/64 r/m16/32/64 imm16/32o..szapco......c...szap.Signed Multiply
6A01+PUSH imm8Push Word, Doubleword or Quadword Onto the Stack
6B01+IMUL r16/32/64 r/m16/32/64 imm8o..szapco......c...szap.Signed Multiply
6C01+f1INS m8DX.d......Input from Port to String
INSB m8DX
6D01+f1INS m16DX.d......Input from Port to String
INSW m16DX
6D03+f1INS m16/32DX.d......Input from Port to String
INSD m32DX
6E01+f1OUTSDX m8.d......Output String to Port
OUTSBDX m8
6F01+f1OUTSDX m16.d......Output String to Port
OUTSWDX m16
6F03+f1OUTSDX m16/32.d......Output String to Port
OUTSDDX m32
70JO rel8o.......Jump short if overflow (OF=1)
71JNO rel8o.......Jump short if not overflow (OF=0)
72JB rel8.......cJump short if below/not above or equal/carry (CF=1)
JNAE rel8
JC rel8
73JNB rel8.......cJump short if not below/above or equal/not carry (CF=0)
JAE rel8
JNC rel8
74JZ rel8....z...Jump short if zero/equal (ZF=0)
JE rel8
75JNZ rel8....z...Jump short if not zero/not equal (ZF=1)
JNE rel8
76JBE rel8....z..cJump short if below or equal/not above (CF=1 AND ZF=1)
JNA rel8
77JNBE rel8....z..cJump short if not below or equal/above (CF=0 AND ZF=0)
JA rel8
78JS rel8...s....Jump short if sign (SF=1)
79JNS rel8...s....Jump short if not sign (SF=0)
7AJP rel8......p.Jump short if parity/parity even (PF=1)
JPE rel8
7BJNP rel8......p.Jump short if not parity/parity odd
JPO rel8
7CJL rel8o..s....Jump short if less/not greater (SF!=OF)
JNGE rel8
7DJNL rel8o..s....Jump short if not less/greater or equal (SF=OF)
JGE rel8
7EJLE rel8o..sz...Jump short if less or equal/not greater ((ZF=1) OR (SF!=OF))
JNG rel8
7FJNLE rel8o..sz...Jump short if not less nor equal/greater ((ZF=0) AND (SF=OF))
JG rel8
800LADD r/m8 imm8o..szapco..szapcAdd
801LOR r/m8 imm8o..szapco..sz.pc.....a..o......cLogical Inclusive OR
802LADC r/m8 imm8.......co..szapco..szapcAdd with Carry
803LSBB r/m8 imm8.......co..szapco..szapcInteger Subtraction with Borrow
804LAND r/m8 imm8o..szapco..sz.pc.....a..o......cLogical AND
805LSUB r/m8 imm8o..szapco..szapcSubtract
806LXOR r/m8 imm8o..szapco..sz.pc.....a..o......cLogical Exclusive OR
807CMP r/m8 imm8o..szapco..szapcCompare Two Operands
810LADD r/m16/32/64 imm16/32o..szapco..szapcAdd
811LOR r/m16/32/64 imm16/32o..szapco..sz.pc.....a..o......cLogical Inclusive OR
812LADC r/m16/32/64 imm16/32.......co..szapco..szapcAdd with Carry
813LSBB r/m16/32/64 imm16/32.......co..szapco..szapcInteger Subtraction with Borrow
814LAND r/m16/32/64 imm16/32o..szapco..sz.pc.....a..o......cLogical AND
815LSUB r/m16/32/64 imm16/32o..szapco..szapcSubtract
816LXOR r/m16/32/64 imm16/32o..szapco..sz.pc.....a..o......cLogical Exclusive OR
817CMP r/m16/32/64 imm16/32o..szapco..szapcCompare Two Operands
820LADD r/m8 imm8o..szapco..szapcAdd
821LOR r/m8 imm8o..szapco..sz.pc.....a..o......cLogical Inclusive OR
822LADC r/m8 imm8.......co..szapco..szapcAdd with Carry
823LSBB r/m8 imm8.......co..szapco..szapcInteger Subtraction with Borrow
824LAND r/m8 imm8o..szapco..sz.pc.....a..o......cLogical AND
825LSUB r/m8 imm8o..szapco..szapcSubtract
826LXOR r/m8 imm8o..szapco..sz.pc.....a..o......cLogical Exclusive OR
827CMP r/m8 imm8o..szapco..szapcCompare Two Operands
82P4+EinvalidInvalid Instruction in 64-Bit Mode
830LADD r/m16/32/64 imm8o..szapco..szapcAdd
83103+LOR r/m16/32/64 imm8o..szapco..sz.pc.....a..o......cLogical Inclusive OR
832LADC r/m16/32/64 imm8.......co..szapco..szapcAdd with Carry
833LSBB r/m16/32/64 imm8.......co..szapco..szapcInteger Subtraction with Borrow
83403+LAND r/m16/32/64 imm8o..szapco..sz.pc.....a..o......cLogical AND
835LSUB r/m16/32/64 imm8o..szapco..szapcSubtract
83603+LXOR r/m16/32/64 imm8o..szapco..sz.pc.....a..o......cLogical Exclusive OR
837CMP r/m16/32/64 imm8o..szapco..szapcCompare Two Operands
84rTEST r/m8 r8o..szapco..sz.pc.....a..o......cLogical Compare
85rTEST r/m16/32/64 r16/32/64o..szapco..sz.pc.....a..o......cLogical Compare
86rLXCHG r8 r/m8Exchange Register/Memory with Register
87rLXCHG r16/32/64 r/m16/32/64Exchange Register/Memory with Register
88rMOV r/m8 r8Move
89rMOV r/m16/32/64 r16/32/64Move
8ArMOV r8 r/m8Move
8BrMOV r16/32/64 r/m16/32/64Move
8CrMOV r/m16/32/64 SregMove
8DrLEA r16/32/64 mLoad Effective Address
8ErMOV Sreg r/m16/32/64Move
8F0POP r/m16/32Pop a Value from the Stack
8F0P4+EPOP r/m64/16Pop a Value from the Stack
90+rXCHG r16/32/64rAXExchange Register/Memory with Register
90NOPNo Operation
F390D2no mnemonic nopNo Operation
F390P4+PAUSEsse2Spin Loop Hint
98CBWAHALConvert Byte to Word
9803+CWDEEAXAXConvert Word to Doubleword
98P4+ECBWAHALConvert
CWDEEAXAX
CDQERAXEAX
99CWDDXAXConvert Word to Doubleword
9903+CDQEDXEAXConvert Doubleword to Quadword
99P4+ECWDDXAXConvert
CDQEDXEAX
CQORDXRAX
9ACALLF ptr16:16/32Call Procedure
9AP4+EinvalidInvalid Instruction in 64-Bit Mode
9BFWAIT01230123Check pending unmasked floating-point exceptions
WAIT
9Bno mnemonic01230123Wait Prefix
9CPUSHFFlagsodiszapcPush FLAGS Register onto the Stack
9C03+PUSHFFlagsodiszapcPush eFLAGS Register onto the Stack
PUSHFDEFlags
9CP4+EPUSHFFlagsodiszapcPush rFLAGS Register onto the Stack
PUSHFQRFlags
9DPOPFFlagsodiszapcodiszapcPop Stack into FLAGS Register
9D03+POPFFlagsodiszapcodiszapcPop Stack into eFLAGS Register
POPFDEFlags
9DP4+EPOPFFlagsodiszapcodiszapcPop Stack into rFLAGS Register
POPFQRFlags
9ED3SAHFAH...szapc...szapcStore AH into Flags
9FD3LAHFAH...szapcLoad Status Flags into AH Register
A0MOVAL moffs8Move
A1MOVrAX moffs16/32/64Move
A2MOV moffs8ALMove
A3MOV moffs16/32/64rAXMove
A4MOVS m8 m8.d......Move Data from String to String
MOVSB m8 m8
A5MOVS m16 m16.d......Move Data from String to String
MOVSW m16 m16
A503+MOVS m16/32 m16/32.d......Move Data from String to String
MOVSD m32 m32
A5P4+EMOVS m16/32/64 m16/32/64.d......Move Data from String to String
MOVSW m16 m16
MOVSD m32 m32
MOVSQ m64 m64
A6CMPS m8 m8.d......o..szapco..szapcCompare String Operands
CMPSB m8 m8
A7CMPS m16 m16.d......o..szapco..szapcCompare String Operands
CMPSW m16 m16
A703+CMPS m16/32 m16/32.d......o..szapco..szapcCompare String Operands
CMPSD m32 m32
A7P4+ECMPS m16/32/64 m16/32/64.d......o..szapco..szapcCompare String Operands
CMPSW m16 m16
CMPSD m32 m32
CMPSQ m64 m64
A8TESTAL imm8o..szapco..sz.pc.....a..o......cLogical Compare
A9TESTrAX imm16/32o..szapco..sz.pc.....a..o......cLogical Compare
AASTOS m8AL.d......Store String
STOSB m8AL
ABSTOS m16AX.d......Store String
STOSW m16AX
AB03+STOS m16/32eAX.d......Store String
STOSD m32EAX
ABP4+ESTOS m16/32/64rAX.d......Store String
STOSW m16AX
STOSD m32EAX
STOSQ m64RAX
ACLODSAL m8.d......Load String
LODSBAL m8
ADLODSAX m16.d......Load String
LODSWAX m16
AD03+LODSeAX m16/32.d......Load String
LODSDEAX m32
ADP4+ELODSrAX m16/32/64.d......Load String
LODSWAX m16
LODSDEAX m32
LODSQRAX m64
AESCAS m8AL.d......o..szapco..szapcScan String
SCASB m8AL
AFSCAS m16AX.d......o..szapco..szapcScan String
SCASW m16AX
AF03+SCAS m16/32eAX.d......o..szapco..szapcScan String
SCASD m32EAX
AFP4+ESCAS m16/32/64rAX.d......o..szapco..szapcScan String
SCASW m16AX
SCASD m32EAX
SCASQ m64RAX
B0+rMOV r8 imm8Move
B8+rMOV r16/32/64 imm16/32/64Move
C0001+ROL r/m8 imm8o..szapco..szapco.......Rotate
C0101+ROR r/m8 imm8o..szapco..szapco.......Rotate
C0201+RCL r/m8 imm8.......co..szapco..szapco.......Rotate
C0301+RCR r/m8 imm8.......co..szapco..szapco.......Rotate
C0401+SHL r/m8 imm8o..szapco..sz.pco....a.cShift
SAL r/m8 imm8
C0501+SHR r/m8 imm8o..szapco..sz.pco....a.cShift
C0601+U4SAL r/m8 imm8o..szapco..sz.pco....a.cShift
SHL r/m8 imm8
C0701+SAR r/m8 imm8o..szapco..sz.pco....a..Shift
C1001+ROL r/m16/32/64 imm8o..szapco..szapco.......Rotate
C1101+ROR r/m16/32/64 imm8o..szapco..szapco.......Rotate
C1201+RCL r/m16/32/64 imm8.......co..szapco..szapco.......Rotate
C1301+RCR r/m16/32/64 imm8.......co..szapco..szapco.......Rotate
C1401+SHL r/m16/32/64 imm8