X86 Opcode and Instruction Reference Home

Other editions: coder32, coder64, coder, 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 24 26 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 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
pf0Fposofldsoprocstmrlxmnemonicop1op2op3op4iextgrp1grp2grp3tested fmodif fdef fundef ff valuesdescription, notes                                                  
00dwrLADDEbGbgen arithbinaryo..szapco..szapcAdd
01dWrLADDEvGvgen arithbinaryo..szapco..szapcAdd
02DwrADDGbEbgen arithbinaryo..szapco..szapcAdd
03DWrADDGvEvgen arithbinaryo..szapco..szapcAdd
04wADDALIbgen arithbinaryo..szapco..szapcAdd
05WADDeAXIvgen arithbinaryo..szapco..szapcAdd
06srPUSHESgen stack segregPush Word, Doubleword or Quadword Onto the Stack
07srPOPESgen stack segregPop a Value from the Stack
08dwrLOREbGbgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
09dWrLOREvGvgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
0ADwrORGbEbgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
0BDWrORGvEvgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
0CwORALIbgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
0DWOReAXIvgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
0EsRPUSHCSgen stack segregPush Word, Doubleword or Quadword Onto the Stack
0FsR00D1POPCSgen stack segregPop a Value from the Stack
0F01invalid
0F02+ Two-byte Instructions
10dwrLADCEbGbgen arithbinary.......co..szapco..szapcAdd with Carry
11dWrLADCEvGvgen arithbinary.......co..szapco..szapcAdd with Carry
12DwrADCGbEbgen arithbinary.......co..szapco..szapcAdd with Carry
13DWrADCGvEvgen arithbinary.......co..szapco..szapcAdd with Carry
14wADCALIbgen arithbinary.......co..szapco..szapcAdd with Carry
15WADCeAXIvgen arithbinary.......co..szapco..szapcAdd with Carry
16SrPUSHSSgen stack segregPush Word, Doubleword or Quadword Onto the Stack
17SrPOPSSgen stack segregPop a Value from the Stack
18dwrLSBBEbGbgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
19dWrLSBBEvGvgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
1ADwrSBBGbEbgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
1BDWrSBBGvEvgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
1CwSBBALIbgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
1DWSBBeAXIvgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
1ESRPUSHDSgen stack segregPush Word, Doubleword or Quadword Onto the Stack
1FSRPOPDSgen stack segregPop a Value from the Stack
20dwrLANDEbGbgen logicalo..szapco..sz.pc.....a..o......cLogical AND
21dWrLANDEvGvgen logicalo..szapco..sz.pc.....a..o......cLogical AND
22DwrANDGbEbgen logicalo..szapco..sz.pc.....a..o......cLogical AND
23DWrANDGvEvgen logicalo..szapco..sz.pc.....a..o......cLogical AND
24wANDALIbgen logicalo..szapco..sz.pc.....a..o......cLogical AND
25WANDeAXIvgen logicalo..szapco..sz.pc.....a..o......cLogical AND
26ESESprefix segregES segment override prefix
26P4+undefinedprefix branchcond(use with any branch instruction is reserved)
27DAAALgen arithdecimal.....a.co..szapc...szapco.......Decimal Adjust AL after Addition
28dwrLSUBEbGbgen arithbinaryo..szapco..szapcSubtract
29dWrLSUBEvGvgen arithbinaryo..szapco..szapcSubtract
2ADwrSUBGbEbgen arithbinaryo..szapco..szapcSubtract
2BDWrSUBGvEvgen arithbinaryo..szapco..szapcSubtract
2CwSUBALIbgen arithbinaryo..szapco..szapcSubtract
2DWSUBeAXIvgen arithbinaryo..szapco..szapcSubtract
2ECSCSprefix segregCS segment override prefix
2EP4+NTAKENprefix branchcondBranch not taken prefix (used only with Jcc instructions)
2FDASALgen arithdecimal.....a.co..szapc...szapco.......Decimal Adjust AL after Subtraction
30dwrLXOREbGbgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
31dWrLXOREvGvgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
32DwrXORGbEbgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
33DWrXORGvEvgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
34wXORALIbgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
35WXOReAXIvgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
36SSSSprefix segregSS segment override prefix
36P4+undefinedprefix branchcond(use with any branch instruction is reserved)
37AAAALAHgen arithdecimal.....a..o..szapc.....a.co..sz.p.ASCII Adjust After Addition
38dwrCMPEbGbgen arithbinaryo..szapco..szapcCompare Two Operands
39dWrCMPEvGvgen arithbinaryo..szapco..szapcCompare Two Operands
3ADwrCMPGbEbgen arithbinaryo..szapco..szapcCompare Two Operands
3BDWrCMPGvEvgen arithbinaryo..szapco..szapcCompare Two Operands
3CwCMPALIbgen arithbinaryo..szapco..szapcCompare Two Operands
3DWCMPeAXIvgen arithbinaryo..szapco..szapcCompare Two Operands
3EDSDSprefix segregDS segment override prefix
3EP4+TAKENprefix branchcondBranch taken prefix (used only with Jcc instructions)
3FAASALAHgen arithdecimal.....a..o..szapc.....a.co..sz.p.ASCII Adjust AL After Subtraction
40+rINCZvgen arithbinaryo..szap.o..szap.Increment by 1
48+rDECZvgen arithbinaryo..szap.o..szap.Decrement by 1
50+rPUSHZvgen stackPush Word, Doubleword or Quadword Onto the Stack
58+rPOPZvgen stackPop a Value from the Stack
6001+PUSHAAXCXDX...gen stackPush All General-Purpose Registers
6003+PUSHAAXCXDX...gen stackPush All General-Purpose Registers
PUSHADEAXECXEDX...
6101+POPADISIBP...gen stackPop All General-Purpose Registers
6103+POPADISIBP...gen stackPop All General-Purpose Registers
POPADEDIESIEBP...
62Dr01+fBOUNDGvMae...gen break stack..i.......i.......i.....Check Array Index Against Bounds
63r02+ARPLEwGwsystem....z.......z...Adjust RPL Field of Segment Selector
6403+FSFSprefix segregFS segment override prefix
64P4+undefinedprefix branchcond(used only with Jcc instructions)
64P4+U2ALTERprefix branchcondAlternating branch prefix (used only with Jcc instructions)
6503+GSGSprefix segregGS segment override prefix
65P4+undefinedprefix branchcond(used only with Jcc instructions)
66no mnemonicprefixOperand-size override prefix
66P4+Mno mnemonicsse2prefixPrecision-size override prefix
67no mnemonicprefixAddress-size override prefix
6801+PUSHIvsgen stackPush Word, Doubleword or Quadword Onto the Stack
6901+IMULGvEvIvgen arithbinaryo..szapco......c...szap.Signed Multiply
6AS01+PUSHIbssgen stackPush Word, Doubleword or Quadword Onto the Stack
6BS01+IMULGvEvIbsgen arithbinaryo..szapco......c...szap.Signed Multiply
6Cw01+f1INSYbDXgen inout string.d......Input from Port to String
INSBYbDX
6DW01+f1INSYwDXgen inout string.d......Input from Port to String
INSWYwDX
6DW03+f1INSYvDXgen inout string.d......Input from Port to String
INSDYdDX
6Ew01+f1OUTSDXXbgen inout string.d......Output String to Port
OUTSBDXXb
6FW01+f1OUTSDXXwgen inout string.d......Output String to Port
OUTSWDXXw
6FW03+f1OUTSDXXvgen inout string.d......Output String to Port
OUTSDDXXd
70tttnJOJbsgen branchcondo.......Jump short if overflow (OF=1)
71tttNJNOJbsgen branchcondo.......Jump short if not overflow (OF=0)
72ttTnJBJbsgen branchcond.......cJump short if below/not above or equal/carry (CF=1)
JNAEJbs
JCJbs
73ttTNJNBJbsgen branchcond.......cJump short if not below/above or equal/not carry (CF=0)
JAEJbs
JNCJbs
74tTtnJZJbsgen branchcond....z...Jump short if zero/equal (ZF=0)
JEJbs
75tTtNJNZJbsgen branchcond....z...Jump short if not zero/not equal (ZF=1)
JNEJbs
76tTTnJBEJbsgen branchcond....z..cJump short if below or equal/not above (CF=1 AND ZF=1)
JNAJbs
77tTTNJNBEJbsgen branchcond....z..cJump short if not below or equal/above (CF=0 AND ZF=0)
JAJbs
78TttnJSJbsgen branchcond...s....Jump short if sign (SF=1)
79TttNJNSJbsgen branchcond...s....Jump short if not sign (SF=0)
7ATtTnJPJbsgen branchcond......p.Jump short if parity/parity even (PF=1)
JPEJbs
7BTtTNJNPJbsgen branchcond......p.Jump short if not parity/parity odd
JPOJbs
7CTTtnJLJbsgen branchcondo..s....Jump short if less/not greater (SF!=OF)
JNGEJbs
7DTTtNJNLJbsgen branchcondo..s....Jump short if not less/greater or equal (SF=OF)
JGEJbs
7ETTTnJLEJbsgen branchcondo..sz...Jump short if less or equal/not greater ((ZF=1) OR (SF!=OF))
JNGJbs
7FTTTNJNLEJbsgen branchcondo..sz...Jump short if not less nor equal/greater ((ZF=0) AND (SF=OF))
JGJbs
80w0LADDEbIbgen arithbinaryo..szapco..szapcAdd
80w1LOREbIbgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
80w2LADCEbIbgen arithbinary.......co..szapco..szapcAdd with Carry
80w3LSBBEbIbgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
80w4LANDEbIbgen logicalo..szapco..sz.pc.....a..o......cLogical AND
80w5LSUBEbIbgen arithbinaryo..szapco..szapcSubtract
80w6LXOREbIbgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
80w7CMPEbIbgen arithbinaryo..szapco..szapcCompare Two Operands
81W0LADDEvIvgen arithbinaryo..szapco..szapcAdd
81W1LOREvIvgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
81W2LADCEvIvgen arithbinary.......co..szapco..szapcAdd with Carry
81W3LSBBEvIvgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
81W4LANDEvIvgen logicalo..szapco..sz.pc.....a..o......cLogical AND
81W5LSUBEvIvgen arithbinaryo..szapco..szapcSubtract
81W6LXOREvIvgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
81W7CMPEvIvgen arithbinaryo..szapco..szapcCompare Two Operands
82w0LADD aliasEbIbgen arithbinaryo..szapco..szapcAdd
82w1LOR aliasEbIbgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
82w2LADC aliasEbIbgen arithbinary.......co..szapco..szapcAdd with Carry
82w3LSBB aliasEbIbgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
82w4LAND aliasEbIbgen logicalo..szapco..sz.pc.....a..o......cLogical AND
82w5LSUB aliasEbIbgen arithbinaryo..szapco..szapcSubtract
82w6LXOR aliasEbIbgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
82w7CMP aliasEbIbgen arithbinaryo..szapco..szapcCompare Two Operands
83SW0LADDEvIbsgen arithbinaryo..szapco..szapcAdd
83SW103+LOREvIbsgen logicalo..szapco..sz.pc.....a..o......cLogical Inclusive OR
83SW2LADCEvIbsgen arithbinary.......co..szapco..szapcAdd with Carry
83SW3LSBBEvIbsgen arithbinary.......co..szapco..szapcInteger Subtraction with Borrow
83SW403+LANDEvIbsgen logicalo..szapco..sz.pc.....a..o......cLogical AND
83SW5LSUBEvIbsgen arithbinaryo..szapco..szapcSubtract
83SW603+LXOREvIbsgen logicalo..szapco..sz.pc.....a..o......cLogical Exclusive OR
83SW7CMPEvIbsgen arithbinaryo..szapco..szapcCompare Two Operands
84dwrTESTEbGbgen arithbinaryo..szapco..sz.pc.....a..o......cLogical Compare
85dWrTESTEvGvgen arithbinaryo..szapco..sz.pc.....a..o......cLogical Compare
86DwrLXCHGGbEbgen datamovExchange Register/Memory with Register
87DWrLXCHGGvEvgen datamovExchange Register/Memory with Register
88dwrMOVEbGbgen datamovMove
89dWrMOVEvGvgen datamovMove
8ADwrMOVGbEbgen datamovMove
8BDwrMOVGvEvgen datamovMove
8CdrMOVEvSwgen datamovMove
8DrLEAGvMgen datamovLoad Effective Address
8EDrMOVSwEvgen datamovMove
8FW0POPEvgen stackPop a Value from the Stack
90+rXCHGZveAXgen datamovExchange Register/Memory with Register
90NOPgen controlNo Operation
F390D3no mnemonic nopgen controlNo Operation
F390P4+PAUSEsse2cachectSpin Loop Hint
98CBWAHALgen converConvert Byte to Word
9803+CWDEEAXAXgen converConvert Word to Doubleword
99CWDDXAXgen converConvert Word to Doubleword
9903+CDQEDXEAXgen converConvert Doubleword to Quadword
9ACALLFApgen branch stackCall Procedure
9BFWAITx87fpu control01230123Check pending unmasked floating-point exceptions
WAIT
9Bno mnemonicprefix x87fpucontrol01230123Wait Prefix
9CPUSHFF...gen stack flgctrlodiszapcPush FLAGS Register onto the Stack
9C03+PUSHFF...gen stack flgctrlodiszapcPush eFLAGS Register onto the Stack
PUSHFDE...
9DPOPFF...gen stack flgctrlodiszapcodiszapcPop Stack into FLAGS Register
9D03+POPFF...gen stack flgctrlodiszapcodiszapcPop Stack into eFLAGS Register
POPFDE...
9ESAHFAHgen datamov flgctrl...szapc...szapcStore AH into Flags
9FLAHFAHgen datamov flgctrl...szapcLoad Status Flags into AH Register
A0wMOVALObgen datamovMove
A1WMOVeAXOvgen datamovMove
A2wMOVObALgen datamovMove
A3WMOVOveAXgen datamovMove
A4wMOVSYbXbgen datamov string.d......Move Data from String to String
MOVSBYbXb
A5WMOVSYwXwgen datamov string.d......Move Data from String to String
MOVSWYwXw
A5W03+MOVSYvXvgen datamov string.d......Move Data from String to String
MOVSDYdXd
A6wCMPSYbXbgen arith stringbinary.d......o..szapco..szapcCompare String Operands
CMPSBYbXb
A7WCMPSYwXwgen arith stringbinary.d......o..szapco..szapcCompare String Operands
CMPSWYwXw
A7W03+CMPSYvXvgen arith stringbinary.d......o..szapco..szapcCompare String Operands
CMPSDYdXd
A8wTESTALIbgen logicalo..szapco..sz.pc.....a..o......cLogical Compare
A9WTESTeAXIvgen logicalo..szapco..sz.pc.....a..o......cLogical Compare
AAwSTOSYbALgen datamov string.d......Store String
STOSBYbAL
ABWSTOSYwAXgen datamov string.d......Store String
STOSWYwAX
ABW03+STOSYveAXgen datamov string.d......Store String
STOSDYdEAX
ACwLODSALXbgen datamov string.d......Load String
LODSBALYb
ADWLODSAXXwgen datamov string.d......Load String
LODSWAXXw
ADW03+LODSeAXXvgen datamov string.d......Load String
LODSDEAXXd
AEwSCASYbALgen arith stringbinary.d......o..szapco..szapcScan String
SCASBYbAL
AFWSCASYwAXgen arith stringbinary.d......o..szapco..szapcScan String
SCASWYwAX
AFW03+SCASYveAXgen arith stringbinary.d......o..szapco..szapcScan String
SCASDYdEAX
B0+rMOVZbIbgen datamovMove
B8+rMOVZvIvgen datamovMove
C0w001+ROLEbIbgen shftroto..szapco..szapco.......Rotate
C0w101+ROREbIbgen shftroto..szapco..szapco.......Rotate
C0w201+RCLEbIbgen shftrot.......co..szapco..szapco.......Rotate
C0w301+RCREbIbgen shftrot.......co..szapco..szapco.......Rotate
C0w401+SHLEbIbgen shftroto..szapco..sz.pco....a.cShift
SALEbIb
C0w501+SHREbIbgen shftroto..szapco..sz.pco....a.cShift
C0w601+U4SAL aliasEbIbgen shftroto..szapco..sz.pco....a.cShift
SHL aliasEbIb
C0w701+SAREbIbgen shftroto..szapco..sz.pco....a..Shift
C1W001+ROLEvIbgen shftroto..szapco..szapco.......Rotate
C1W101+ROREvIbgen shftroto..szapco..szapco.......Rotate
C1W201+RCLEvIbgen shftrot.......co..szapco..szapco.......Rotate
C1W301+RCREvIbgen shftrot.......co..szapco..szapco.......Rotate
C1W401+SHLEvIbgen shftroto..szapco..sz.pco....a.cShift
SALEvIb
C1W501+SHREvIbgen shftroto..szapco..sz.pco....a.cShift
C1w601+U4SAL aliasEvIbgen shftroto..szapco..sz.pco....a.cShift
SHL aliasEvIb
C1W701+SAREvIbgen shftroto..szapco..sz.pco....a..Shift
C2RETNIwgen branch stackReturn from procedure
C3RETNgen branch stackReturn from procedure
C4rLESESGvMpgen datamov segregLoad Far Pointer
C5rLDSDSGvMpgen datamov segregLoad Far Pointer
C6w0MOVEbIbgen datamovMove
C7W0MOVEvIvgen datamovMove
C801+ENTERe