x86 architecture 1 byte opcodes
xxh |
x0h |
x1h |
x2h |
x3h |
x4h |
x5h |
x6h |
x7h |
|
0xh |
ADD Eb,Gb |
ADD Ev,Gv |
ADD Gb,Eb |
ADD Gv,Ev |
ADD AL,Ib |
ADD rAX,Iz |
PUSHI64 ES |
POPI64 ES |
1xh |
ADC Eb,Gb |
ADC Ev,Gv |
ADC Gb,Eb |
ADC Gv,Ev |
ADC AL,Ib |
ADC rAX,Iz |
PUSHI64 SS |
POPI64 SS |
2xh |
AND Eb,Gb |
AND Ev,Gv |
AND Gb,Eb |
AND Gv,Ev |
AND AL,Ib |
AND rAx,Iz |
ES: |
DAAI64 |
3xh |
XOR Eb,Gb |
XOR Ev,Gv |
XOR Gb,Eb |
XOR Gv,Ev |
XOR AL,Ib |
XOR rAX,Iz |
SS: |
AAAI64 |
|
4xh !REX2 |
INCI64 eAX |
INCI64 eCX |
INCI64 eDX |
INCI64 eBX |
INCI64 eSP |
INCI64 eBP |
INCI64 eSI |
INCI64 eDI |
REX |
5xh |
PUSHD64 rAX / r8 / r16 / r24 |
PUSHD64 rCX / r9 / r17 / r25 |
PUSHD64 rDX / r10 / r18 / r26 |
PUSHD64 rBX / r11 / r19 / r27 |
PUSHD64 rSP / r12 / r20 / r28 |
PUSHD64 rBP / r13 / r21 / r29 |
PUSHD64 rSI / r14 / r22 / r30 |
PUSHD64 rDI / r15 / r23 / r31 |
REX2.W1 PUSHPF64 Rq |
6xh |
PUSHAI64 PUSHADI64 (80186+) |
POPAI64 POPADI64 (80186+) |
BOUNDI64 Gv,Ma (80186+) |
ARPLI64 Ew,Gw (80286+) |
FS: (80386+)
Hint Alt Taken for Jcc (P4) |
GS: (80386+) |
OPSIZE: (80386+) |
ADSIZE: (80386+) |
L1OM MVEX EVEX |
MOVSXD Gv,Ed (PM64) |
7xh !REX2 |
JODf64 Jb |
JNODf64 Jb |
JBDf64 Jb |
JNBDf64 Jb |
JZDf64 Jb |
JNZDf64 Jb |
JBEDf64 Jb |
JNBEDf64 Jb |
JKZDv64 vKw,Jbv (K1OM) |
JKNZDv64 vKw,Jbv (K1OM) |
|
8xh |
group #1 Eb,Ib |
group #1 Ev,Iz |
group #1*I64 Eb,Ib |
group #1 Ev,Ib |
TEST Eb,Gb |
TEST Ev,Gv |
XCHG Eb,Gb |
XCHG Ev,Gv |
9xh |
NOP (PM64 O32: !ZX)
(F3h) PAUSE (see CPUID) |
XCHG rCX,rAX XCHG r9,rAX XCHG r17,rAX XCHG r25,rAX |
XCHG rDX,rAX XCHG r10,rAX XCHG r18,rAX XCHG r26,rAX |
XCHG rBX,rAX XCHG r11,rAX XCHG r19,rAX XCHG r27,rAX |
XCHG rSP,rAX XCHG r12,rAX XCHG r20,rAX XCHG r28,rAX |
XCHG rBP,rAX XCHG r13,rAX XCHG r21,rAX XCHG r29,rAX |
XCHG rSI,rAX XCHG r14,rAX XCHG r22,rAX XCHG r30,rAX |
XCHG rDI,rAX XCHG r15,rAX XCHG r23,rAX XCHG r31,rAX |
Axh !REX2 |
MOV AL,Ov |
MOV rAX,Ov |
MOV Ov,AL |
MOV Ov,rAX |
MOVS Yb,Xb |
MOVS Yv,Xv |
CMPS Yb,Xb |
CMPS Yv,Xv |
REX2.W0 JMPABS Aq |
Bxh |
(!REX) MOV AL,Ib (REX) MOV AL,Ib MOV R8B,Ib MOV R16B,Ib MOV R24B,Ib |
(!REX) MOV CL,Ib (REX) MOV CL,Ib MOV R9B,Ib MOV R17B,Ib MOV R25B,Ib |
(!REX) MOV DL,Ib (REX) MOV DL,Ib MOV R10B,Ib MOV R18B,Ib MOV R26B,Ib |
(!REX) MOV BL,Ib (REX) MOV BL,Ib MOV R11B,Ib MOV R19B,Ib MOV R27B,Ib |
(!REX) MOV AH,Ib (REX) MOV SPL,Ib MOV R12B,Ib MOV R20B,Ib MOV R28B,Ib |
(!REX) MOV CH,Ib (REX) MOV BPL,Ib MOV R13B,Ib MOV R21B,Ib MOV R29B,Ib |
(!REX) MOV DH,Ib (REX) MOV SIL,Ib MOV R14B,Ib MOV R22B,Ib MOV R30B,Ib |
(!REX) MOV BH,Ib (REX) MOV DIL,Ib MOV R15B,Ib MOV R23B,Ib MOV R31B,Ib |
|
Cxh |
group #2 Eb,Ib (80186+) |
group #2 Ev,Ib (80186+) |
RET nearDf64 Iw |
RET nearDf64 |
LESI64 Gv,Mp (w:v) |
LDSI64 Gv,Mp (w:v) |
group #11 Eb,Ib |
group #11 Ev,Iz |
VEX3 |
VEX2 |
Dxh |
group #2 Eb,1 |
group #2 Ev,1 |
group #2 Eb,CL |
group #2 Ev,CL |
AAMI64 Ib |
AADI64 Ib |
S(ET)ALCI64 |
XLAT |
reserved |
REX2 |
L1OM |
Exh !REX2 |
LOOPNEDf64 LOOPNZDf64 Jb |
LOOPEDf64 LOOPZDf64 Jb |
LOOPDf64 Jb |
JCXZDf64 JECXDf64 JRCXDf64 Jb |
IN AL,Ib |
IN eAX,Ib |
OUT Ib,AL |
OUT Ib,eAX |
Fxh |
LOCK: |
INT1 (ICEBP) (80386+) |
REPNE:
BND: (MPX) XACQUIRE: (HLE) |
REP: REPE:
XRELEASE: (HLE) |
HLT |
CMC |
group #3 Eb |
group #3 Ev |
xxh |
x8h |
x9h |
xAh |
xBh |
xCh |
xDh |
xEh |
xFh |
|
0xh |
OR Eb,Gb |
OR Ev,Gv |
OR Gb,Eb |
OR Gv,Ev |
OR AL,Ib |
OR rAX,Iz |
PUSHI64 CS |
POP CS (8086/8088) #UD (80186/80188)
2 byte opcodes (80286+) |
1xh |
SBB Eb,Gb |
SBB Ev,Gv |
SBB Gb,Eb |
SBB Gv,Ev |
SBB AL,Ib |
SBB rAX,Iz |
PUSHI64 DS |
POPI64 DS |
2xh |
SUB Eb,Gb |
SUB Ev,Gv |
SUB Gb,Eb |
SUB Gv,Ev |
SUB AL,Ib |
SUB rAX,Iz |
CS:  
Hint Not Taken for Jcc (P4) |
DASI64 |
3xh |
CMP Eb,Gb |
CMP Ev,Gv |
CMP Gb,Eb |
CMP Gv,Ev |
CMP AL,Ib |
CMP rAX,Iz |
DS: CET: (CET)
Hint Taken for Jcc (P4) |
AASI64 |
|
4xh !REX2 |
DECI64 eAX |
DECI64 eCX |
DECI64 eDX |
DECI64 eBX |
DECI64 eSP |
DECI64 eBP |
DECI64 eSI |
DECI64 eDI |
REX |
5xh |
POPD64 rAX / r8 / r16 / r24 |
POPD64 rCX / r9 / r17 / r25 |
POPD64 rDX / r10 / r18 / r26 |
POPD64 rBX / r11 / r19 / r27 |
POPD64 rSP / r12 / r20 / r28 |
POPD64 rBP / r13 / r21 / r29 |
POPD64 rSI / r14 / r22 / r30 |
POPD64 rDI / r15 / r23 / r31 |
REX2.W1 POPPF64 Rq |
6xh |
PUSHD64 Iz (80186+) |
IMUL Gv,Ev,Iz (80186+) |
PUSHD64 Ib (80186+) |
IMUL Gv,Ev,Ib (80186+) |
INS Yb,DX (80186+) |
INS Yz,DX (80186+) |
OUTS DX,Xb (80186+) |
OUTS DX,Xz (80186+) |
7xh !REX2 |
JSDf64 Jb |
JNSDf64 Jb |
JPDf64 Jb |
JNPDf64 Jb |
JLDf64 Jb |
JNLDf64 Jb |
JLEDf64 Jb |
JNLEDf64 Jb |
|
8xh |
MOV Eb,Gb |
MOV Ev,Gv |
MOV Gb,Eb |
MOV Gv,Ev |
MOV Mw,Sw MOV Rv,Sw |
LEA Gv,M |
MOV Sw,Mw MOV Sw,Rv |
group #1A |
9xh |
CBW (8088) CWDE (80386+) CDQE (PM64) |
CWD (8088) CDQ (80386+) CQO (PM64) |
CALLI64 Ap (w:z) |
WAIT FWAIT |
PUSHFD64 Fv |
POPFD64 Fv |
SAHF (LM: if AHF64) |
LAHF (LM: if AHF64) |
Axh !REX2 |
TEST AL,Ib |
TEST rAX,Iz |
STOS Yb,AL |
STOS Yv,rAX |
LODS AL,Xb |
LODS rAX,Xv |
SCAS Yb,AL |
SCAS Yv,rAX |
Bxh |
MOV rAX,Iv MOV r8,Iv MOV r16,Iv MOV r24,Iv |
MOV rCX,Iv MOV r9,Iv MOV r17,Iv MOV r25,Iv |
MOV rDX,Iv MOV r10,Iv MOV r18,Iv MOV r26,Iv |
MOV rBX,Iv MOV r11,Iv MOV r19,Iv MOV r27,Iv |
MOV rSP,Iv MOV r12,Iv MOV r20,Iv MOV r28,Iv |
MOV rBP,Iv MOV r13,Iv MOV r21,Iv MOV r29,Iv |
MOV rSI,Iv MOV r14,Iv MOV r22,Iv MOV r30,Iv |
MOV rDI,Iv MOV r15,Iv MOV r23,Iv MOV r31,Iv |
|
Cxh |
ENTERD64 Iw,Ib (80186+) |
LEAVED64 (80186+) |
RET far Iw |
RET far |
INT3 |
INT Ib |
INTOI64 |
IRET |
Dxh |
ESC 0 |
ESC 1 |
ESC 2 |
ESC 3 |
ESC 4 |
ESC 5 |
ESC 6 |
ESC 7 |
Exh !REX2 |
CALLDf64 Jz |
JMPDf64 Jz |
JMPI64 Ap (w:z) |
JMPDf64 Jb |
IN AL,DX |
IN eAX,DX |
OUT DX,AL |
OUT DX,eAX |
Fxh |
CLC |
STC |
CLI (F0h) CLX (REX32) |
STI (F0h) STX (REX32) |
CLD |
STD |
group #4 INC/DEC |
group #5 INC/DEC/etc. |
On 8086/8088 processors the following behavior was supported instead.
xxh |
x0h |
x1h |
x2h |
x3h |
x4h |
x5h |
x6h |
x7h |
|
... |
... |
6xh |
JO* Jb |
JNO* Jb |
JB* Jb |
JNB* Jb |
JZ* Jb |
JNZ* Jb |
JBE* Jb |
JNBE* Jb |
7xh |
JO Jb |
JNO Jb |
JB Jb |
JNB Jb |
JZ Jb |
JNZ Jb |
JBE Jb |
JNBE Jb |
8xh |
group #1 Eb,Ib |
group #1 Ew,Iw |
group #1* Eb,Ib |
group #1 Ew,Ib |
TEST Eb,Gb |
TEST Ew,Gw |
XCHG Eb,Gb |
XCHG Ew,Gw |
... |
... |
Cxh |
RET* near Iw |
RET* near |
RET near Iw |
RET near |
LES Gw,Mp (w:w) |
LDS Gw,Mp (w:w) |
group #11 Eb,Ib |
group #11 Ew,Iw |
LES Gw,(IND:TMP) |
LDS Gw,(IND:TMP) |
... |
... |
Fxh |
LOCK: |
LOCK:* |
REPNE: |
REP: REPE: |
HLT |
CMC |
group #3 Eb |
group #3 Ew |
xxh |
x8h |
x9h |
xAh |
xBh |
xCh |
xDh |
xEh |
xFh |
|
... |
... |
6xh |
JS* Jb |
JNS* Jb |
JP* Jb |
JNP* Jb |
JL* Jb |
JNL* Jb |
JLE* Jb |
JNLE* Jb |
7xh |
JS Jb |
JNS Jb |
JP Jb |
JNP Jb |
JL Jb |
JNL Jb |
JLE Jb |
JNLE Jb |
8xh |
MOV Eb,Gb |
MOV Ew,Gw |
MOV Gb,Eb |
MOV Gw,Ew |
MOV Mw,Sw MOV Rw,Sw |
LEA Gv,M |
MOV Sw,Mw MOV Sw,Rw |
group #1A |
LEA Gv,IND |
... |
... |
Cxh |
RET* far Iw |
RET* far |
RET far Iw |
RET far |
INT3 |
INT Ib |
INTO |
IRET |
... |
... |
Fxh |
CLC |
STC |
CLI |
STI |
CLD |
STD |
group #4 INC/DEC |
group #5 INC/DEC/etc. |
note: The opcodes marked with * are aliases to other opcodes.
© 1996-2024 by Christian Ludloff. All rights reserved. Use at your own risk.
|