X86 Opcode and Instruction Reference Home

Other editions: coder32, 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 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
06EinvalidInvalid Instruction in 64-Bit Mode
07EinvalidInvalid 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
0EEinvalidInvalid Instruction in 64-Bit Mode
0F 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
16EinvalidInvalid Instruction in 64-Bit Mode
17EinvalidInvalid 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
1EEinvalidInvalid Instruction in 64-Bit Mode
1FEinvalidInvalid 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
26EnullNull Prefix in 64-bit Mode
27EinvalidInvalid 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
2EEundefined(branch hint prefixes have no effect in 64-bit mode)
2EEnullNull Prefix in 64-bit Mode
2FEinvalidInvalid 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
36EnullNull Prefix in 64-bit Mode
37EinvalidInvalid 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
3EEundefined(branch hint prefixes have no effect in 64-bit mode)
3EEnullNull Prefix in 64-bit Mode
3FEinvalidInvalid Instruction in 64-Bit Mode
40EREXAccess to new 8-bit registers
41EREX.BExtension of the r/m field, base field, or opcode reg field
42EREX.XExtension of the SIB index field
43EREX.XBREX.X and REX.B combination
44EREX.RExtension of the ModR/M reg field
45EREX.RBREX.R and REX.B combination
46EREX.RXREX.R and REX.X combination
47EREX.RXBREX.R, REX.X and REX.B combination
48EREX.W64 Bit Operand Size
49EREX.WBREX.W and REX.B combination
4AEREX.WXREX.W and REX.X combination
4BEREX.WXBREX.W, REX.X and REX.B combination
4CEREX.WRREX.W and REX.R combination
4DEREX.WRBREX.W, REX.R and REX.B combination
4EEREX.WRXREX.W, REX.R and REX.X combination
4FEREX.WRXBREX.W, REX.R, REX.X and REX.B combination
50+rEPUSH r64/16Push Word, Doubleword or Quadword Onto the Stack
58+rEPOP r64/16Pop a Value from the Stack
60EinvalidInvalid Instruction in 64-Bit Mode
61EinvalidInvalid Instruction in 64-Bit Mode
62EinvalidInvalid Instruction in 64-Bit Mode
63rEMOVSXD r32/64 r/m32Move with Sign-Extension
64Eundefined(branch hint prefixes have no effect in 64-bit mode)
65GSGSGS segment override prefix
65undefined(used only with Jcc instructions)
66no mnemonicOperand-size override prefix
66Mno mnemonicsse2Precision-size override prefix
67no mnemonicAddress-size override prefix
68PUSH imm16/32Push Word, Doubleword or Quadword Onto the Stack
69IMUL r16/32/64 r/m16/32/64 imm16/32o..szapco......c...szap.Signed Multiply
6APUSH imm8Push Word, Doubleword or Quadword Onto the Stack
6BIMUL r16/32/64 r/m16/32/64 imm8o..szapco......c...szap.Signed Multiply
6Cf1INS m8DX.d......Input from Port to String
INSB m8DX
6Df1INS m16DX.d......Input from Port to String
INSW m16DX
6Df1INS m16/32DX.d......Input from Port to String
INSD m32DX
6Ef1OUTSDX m8.d......Output String to Port
OUTSBDX m8
6Ff1OUTSDX m16.d......Output String to Port
OUTSWDX m16
6Ff1OUTSDX 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
82EinvalidInvalid Instruction in 64-Bit Mode
830LADD r/m16/32/64 imm8o..szapco..szapcAdd
831LOR 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
834LAND r/m16/32/64 imm8o..szapco..sz.pc.....a..o......cLogical AND
835LSUB r/m16/32/64 imm8o..szapco..szapcSubtract
836LXOR 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
8F0EPOP r/m64/16Pop a Value from the Stack
90+rXCHG r16/32/64rAXExchange Register/Memory with Register
90NOPNo Operation
F390D1no mnemonic nopNo Operation
F390PAUSEsse2Spin Loop Hint
98ECBWAHALConvert
CWDEEAXAX
CDQERAXEAX
99ECWDDXAXConvert
CDQEDXEAX
CQORDXRAX
9AEinvalidInvalid Instruction in 64-Bit Mode
9BFWAIT01230123Check pending unmasked floating-point exceptions
WAIT
9Bno mnemonic01230123Wait Prefix
9CEPUSHFFlagsodiszapcPush rFLAGS Register onto the Stack
PUSHFQRFlags
9DEPOPFFlagsodiszapcodiszapcPop Stack into rFLAGS Register
POPFQRFlags
9ED2SAHFAH...szapc...szapcStore AH into Flags
9FD2LAHFAH...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
A5EMOVS 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
A7ECMPS 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
ABESTOS m16/32/64rAX.d......Store String
STOSW m16AX
STOSD m32EAX
STOSQ m64RAX
ACLODSAL m8.d......Load String
LODSBAL m8
ADELODSrAX m16/32/64.d......Load String
LODSWAX m16
LODSDEAX m32
LODSQRAX m64
AESCAS m8AL.d......o..szapco..szapcScan String
SCASB m8AL
AFESCAS 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
C00ROL r/m8 imm8o..szapco..szapco.......Rotate
C01ROR r/m8 imm8o..szapco..szapco.......Rotate
C02RCL r/m8 imm8.......co..szapco..szapco.......Rotate
C03RCR r/m8 imm8.......co..szapco..szapco.......Rotate
C04SHL r/m8 imm8o..szapco..sz.pco....a.cShift
SAL r/m8 imm8
C05SHR r/m8 imm8o..szapco..sz.pco....a.cShift
C06U3SAL r/m8 imm8o..szapco..sz.pco....a.cShift
SHL r/m8 imm8
C07SAR r/m8 imm8o..szapco..sz.pco....a..Shift
C10ROL r/m16/32/64 imm8o..szapco..szapco.......Rotate
C11ROR r/m16/32/64 imm8o..szapco..szapco.......Rotate
C12RCL r/m16/32/64 imm8.......co..szapco..szapco.......Rotate
C13RCR r/m16/32/64 imm8.......co..szapco..szapco.......Rotate
C14SHL r/m16/32/64 imm8o..szapco..sz.pco....a.cShift
SAL r/m16/32/64 imm8
C15SHR r/m16/32/64 imm8o..szapco..sz.pco....a.cShift
C16U3SAL r/m16/32/64 imm8o..szapco..sz.pco....a.cShift
SHL r/m16/32/64 imm8
C17SAR r/m16/32/64 imm8o..szapco..sz.pco....a..Shift
C2RETN imm16Return from procedure
C3RETNReturn from procedure
C4EinvalidInvalid Instruction in 64-Bit Mode
C5EinvalidInvalid Instruction in 64-Bit Mode
C60MOV r/m8 imm8Move
C70MOV r/m16/32/64 imm16/32Move
C8ENTERrBP imm16 imm8Make Stack Frame for Procedure Parameters
C9LEAVErBPHigh Level Procedure Exit
CAfRETF imm16Return from procedure
CBfRETFReturn from procedure
CCfINT3eFlags..i.......i.......i.....Call to Interrupt Procedure
CDfINT imm8eFlags..i.......i.......i.....Call to Interrupt Procedure
CEfINTOeFlagso.........i.......i.......i.....Call to Interrupt Procedure
CFEfIRETFlagsodiszapcodiszapcInterrupt Return
IRETDEFlags
IRETQRFlags
D00ROL r/m81o..szapco..szapcRotate
D01ROR r/m81o..szapco..szapcRotate
D02RCL r/m81.......co..szapco..szapcRotate
D03RCR r/m81.......co..szapco..szapcRotate
D04SHL r/m81o..szapco..sz.pc.....a..Shift
SAL r/m81
D05SHR r/m81o..szapco..sz.pc.....a..Shift
D06U3SAL r/m81o..szapco..sz.pc.....a..Shift
SHL r/m81
D07SAR r/m81o..szapco..sz.pc.....a..Shift
D10ROL r/m16/32/641o..szapco..szapcRotate
D11ROR r/m16/32/641o..szapco..szapcRotate
D12RCL r/m16/32/641.......co..szapco..szapcRotate
D13RCR r/m16/32/641.......co..szapco..szapcRotate
D14SHL r/m16/32/641o..szapco..sz.pc.....a..Shift
SAL r/m16/32/641
D15SHR r/m16/32/641o..szapco..sz.pc.....a..Shift
D16U3SAL r/m16/32/641o..szapco..sz.pc.....a..Shift
SHL r/m16/32/641
D17SAR r/m16/32/641o..szapco..sz.pc.....a..Shift
D20ROL r/m8CLo..szapco..szapco.......Rotate
D21ROR r/m8CLo..szapco..szapco.......Rotate
D22RCL r/m8CL.......co..szapco..szapco.......Rotate
D23RCR r/m8CL.......co..szapco..szapco.......Rotate
D24SHL r/m8CLo..szapco..sz.pco....a.cShift
SAL r/m8CL
D25SHR r/m8CLo..szapco..sz.pco....a.cShift
D26U3SAL r/m8CLo..szapco..sz.pco....a.cShift
SHL r/m8CL
D27SAR r/m8CLo..szapco..sz.pco....a..Shift
D30ROL r/m16/32/64CLo..szapco..szapco.......Rotate
D31ROR r/m16/32/64CLo..szapco..szapco.......Rotate
D32RCL r/m16/32/64CL.......co..szapco..szapco.......Rotate
D33RCR r/m16/32/64CL.......co..szapco..szapco.......Rotate
D34SHL r/m16/32/64CLo..szapco..sz.pco....a.cShift
SAL r/m16/32/64CL
D35SHR r/m16/32/64CLo..szapco..sz.pco....a.cShift
D36U3SAL r/m16/32/64CLo..szapco..sz.pco....a.cShift
SHL r/m16/32/64CL
D37SAR r/m16/32/64CLo..szapco..sz.pc.....a..Shift
D4EinvalidInvalid Instruction in 64-Bit Mode
D5EinvalidInvalid Instruction in 64-Bit Mode
D6EinvalidInvalid Instruction in 64-Bit Mode
D7XLATAL mTable Look-up Translation
XLATBAL m
D80FADDST m32real0123.1..0.23Add
FADDST STi
D81FMULST m32real0123.1..0.23Multiply
FMULST STi
D82FCOMST STi/m32real01230123Compare Real
D8D12FCOMSTST101230123Compare Real
D83pFCOMPST STi/m32real01230123Compare Real and Pop
D8D93pFCOMPSTST1<