https://www.sandpile.org/x86/opc_1.htm bg image(./../pics/back.gif) ---------------------------------------------------------------------------------------------------------------------------------------------- x86 architecture 1 byte opcodes --------------------------------------------------------------------- +-----------------------------------------------------------------------------------------------------------------------------------------------------+ | | | | | | | | | | | xxh | x0h | x1h | x2h | x3h | x4h | x5h | x6h | x7h | | | | | | | | | | | |-----------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------------------------------------------------------------------------------------------------------------------------------------------| | | ADD | ADD | ADD | ADD | ADD | ADD | PUSH^I64 | POP^I64 | | 0xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAX,Iz | ES | ES | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | ADC | ADC | ADC | ADC | ADC | ADC | PUSH^I64 | POP^I64 | | 1xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAX,Iz | SS | SS | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | AND | AND | AND | AND | AND | AND | | | | 2xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAx,Iz | ES: | DAA^I64 | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | XOR | XOR | XOR | XOR | XOR | XOR | | | | 3xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAX,Iz | SS: | AAA^I64 | | | | | | | | | | | |-----------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------------------------------------------------------------------------------------------------------------------------------------------| | | INC^I64 eAX[ ] | INC^I64 eCX | INC^I64 eDX | INC^I64 eBX | INC^I64 eSP | INC^I64 eBP | INC^I64 eSI | INC^I64 eDI | | 4xh |----------------------------------------------------------------------------------------------------------------------------------------| | !REX2 | REX | |------------+----------------------------------------------------------------------------------------------------------------------------------------| | | PUSH^D64 | PUSH^D64 | PUSH^D64 | PUSH^D64 | PUSH^D64 | PUSH^D64 | PUSH^D64 | PUSH^D64 | | | rAX / r8 / r16 | rCX / r9 / r17 | rDX / r10 / | rBX / r11 / | rSP / r12 / | rBP / r13 / | rSI / r14 / r22 | rDI / r15 / | | 5xh | / r24 | / r25 | r18 / r26 | r19 / r27 | r20 / r28 | r21 / r29 | / r30 | r23 / r31 | | |----------------------------------------------------------------------------------------------------------------------------------------| | | REX2.W1 PUSHP^F64[ ]Rq | |------------+----------------------------------------------------------------------------------------------------------------------------------------| | | | | BOUND^I64 | ARPL^I64 Ew,Gw | FS: | | | | | | PUSHA^I64 | POPA^I64 | Gv,Ma | (80286+) | (80386+) | | | | | 6xh | PUSHAD^I64 | POPAD^I64 | (80186+) | | ------- | GS: | OPSIZE: | ADSIZE: | | | (80186+) | (80186+) |----------------+----------------| Hint Alt Taken | (80386+) | (80386+) | (80386+) | | | | | ^L1OM MVEX [ | MOVSXD^ Gv,Ed | for Jcc (P4) | | | | | | | | EVEX] | (PM64) | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | | | | | JZ^Df64 Jb | JNZ^Df64 Jb | | | | | JO^Df64 | JNO^Df64 | JB^Df64 | JNB^Df64 |----------------+----------------| JBE^Df64 | JNBE^Df64 | | 7xh | Jb | Jb | Jb | Jb | JKZ^Dv64 | JKNZ^Dv64 | Jb | Jb | | !REX2 | | | | | vKw,Jb^v | vKw,Jb^v | | | | | | | | | (K1OM) | (K1OM) | | | |-----------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------------------------------------------------------------------------------------------------------------------------------------------| | | group #1 | group #1 | group #1*^I64 | group #1 | TEST | TEST | XCHG | XCHG | | 8xh | Eb,Ib | Ev,Iz | Eb,Ib | Ev,Ib | Eb,Gb | Ev,Gv | Eb,Gb | Ev,Gv | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | (F3h) PAUSE | | | | | | | | | | XCHG rAX,rAX | XCHG rCX,rAX | | | | | | | | | | [ ] | XCHG rDX,rAX | XCHG rBX,rAX | XCHG rSP,rAX | XCHG rBP,rAX | XCHG rSI,rAX[ ] | XCHG rDI,rAX | | 9xh |----------------| XCHG r9,rAX^ | [ ] | [ ] | [ ] | [ ] | XCHG r14,rAX^ | [ ] | | | XCHG r8,rAX | | XCHG r10,rAX^ | XCHG r11,rAX^ | XCHG r12,rAX^ | XCHG r13,rAX^ | XCHG r22,rAX | XCHG r15,rAX^ | | | XCHG r16,rAX | XCHG r17,rAX | XCHG r18,rAX | XCHG r19,rAX | XCHG r20,rAX | XCHG r21,rAX | XCHG r30,rAX | XCHG r23,rAX | | | XCHG r24,rAX | XCHG r25,rAX | XCHG r26,rAX | XCHG r27,rAX | XCHG r28,rAX | XCHG r29,rAX | | XCHG r31,rAX | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | | MOV | | | | | | | | | MOV | rAX,Ov | MOV | MOV | MOVS | MOVS | CMPS | CMPS | | Axh | AL,Ob |----------------| Ob,AL | Ov,rAX | Yb,Xb | Yv,Xv | Yb,Xb | Yv,Xv | | !REX2 | | REX2.W0 | | | | | | | | | | JMPABS Aq | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | (!REX) MOV | (!REX) MOV | (!REX) MOV | (!REX) MOV | (!REX) MOV | (!REX) MOV | (!REX) MOV | (!REX) MOV | | | AL,Ib | CL,Ib | DL,Ib | BL,Ib | AH,Ib | CH,Ib | DH,Ib | BH,Ib | | | (REX) MOV | (REX) MOV | (REX) MOV | (REX) MOV | (REX) MOV | (REX) MOV | (REX) MOV | (REX) MOV | | Bxh | AL,Ib | CL,Ib | DL,Ib | BL,Ib | SPL,Ib | BPL,Ib | SIL,Ib | DIL,Ib | | | MOV R8B,Ib | MOV R9B,Ib | MOV R10B,Ib | MOV R11B,Ib | MOV R12B,Ib | MOV R13B,Ib | MOV R14B,Ib | MOV R15B,Ib | | | MOV R16B,Ib | MOV R17B,Ib | MOV R18B,Ib | MOV R19B,Ib | MOV R20B,Ib | MOV R21B,Ib | MOV R22B,Ib | MOV R23B,Ib | | | MOV R24B,Ib | MOV R25B,Ib | MOV R26B,Ib | MOV R27B,Ib | MOV R28B,Ib | MOV R29B,Ib | MOV R30B,Ib | MOV R31B,Ib | |-----------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------------------------------------------------------------------------------------------------------------------------------------------| | | group #2 | group #2 | | | LES^I64 Gv,Mp | LDS^I64 Gv,Mp | | | | Cxh | Eb,Ib | Ev,Ib | RET near^Df64 | RET near^Df64 | (w:v) | (w:v) | group #11 | group #11 | | | (80186+) | (80186+) | Iw | |----------------+----------------| Eb,Ib | Ev,Iz | | | | | | | VEX3 | VEX2 | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | group #2 | group #2 | group #2 | group #2 | [ ]AAM^I64 Ib | [ ]AAD^I64 Ib | [ ]S(ET)ALC^I64 | | | Dxh | Eb,1 | Ev,1 | Eb,CL | Ev,CL |----------------+----------------+-----------------| XLAT | | | | | | | reserved | REX2 | L1OM | UDB | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | LOOPNE^Df64 | LOOPE^Df64 | | JCXZ^Df64 | | | | | | Exh | LOOPNZ^Df64 | LOOPZ^Df64 | LOOP^Df64 | JECX^Df64 | IN | IN | OUT | OUT | | !REX2 | Jb | Jb | Jb | JRCX^Df64 | AL,Ib | eAX,Ib | Ib,AL | Ib,eAX | | | | | | Jb | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+----------------| | | | #UD (80186/ | | REP: | | | | | | | | 80188) | REPNE: | REPE: | | | | | | Fxh | LOCK: | UMPF: (80286) | ------- | ------- | HLT | CMC | group #3 | group #3 | | | | ------- | BND: (MPX) | | | | Eb | Ev | | | | INT1 aka ICEBP | XACQUIRE: (HLE | XRELEASE: (HLE | | | | | | | | (80386+) | ) | ) | | | | | |-----------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------------------------------------------------------------------------------------------------------------------------------------------| | | XCHG AX, AX - classic 16-bit | | | | | NOP (8086) | If CPUID does indicate support, | | | |---------------------------------| then a REP prefix will apply | The blame for that "special treatment" of PM64 O32 NOP - | | | XCHG eAX,eAX - wider 32-bit NOP | PAUSE semantics to a NOP. | effectively D64 - falls on me. | | notes | (80386) | | | | on 90h |---------------------------------+---------------------------------| I did spot that zeroing the upper 32 bits of RAX leads to | | | XCHG rAX, rAX - wider 64-bit | | undesired non-NOP behavior, but | | | NOP (x86-64) | In PM64 with O32, XCHG EAX,EAX | failed to convince our team in 2001 to use one of the freed up | | |---------------------------------| must not zero the upper 32 bits | 1-byte opcodes (a la UDB). | | | XCHG rN | ,16,24) is not | of RAX. Thus it is D64. | | | | , rAX (N=8 | a NOP! | | | +-----------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------+ | | | | | | | | | | | xxh | x8h | x9h | xAh | xBh | xCh | xDh | xEh | xFh | | | | | | | | | | | |----------------------------------------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------------------------------------| | | | | | | | | PUSH^I64 | | | | | | | | | | CS | POP CS (8086/ | | | | | | | | | As of 2025 | 8088) | | | | | | | | | byte 0Eh | #UD (80186/ | | 0xh | OR | OR | OR | OR | OR | OR | is in active | 80188) | | | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAX,Iz | use by a | ------- | | | | | | | | | corporate | 2 byte opcodes | | | | | | | | | entity other | (80286+) | | | | | | | | | than Intel or | | | | | | | | | | AMD. | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | SBB | SBB | SBB | SBB | SBB | SBB | PUSH^I64 | POP^I64 | | 1xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAX,Iz | DS | DS | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | | | | | | | CS: | | | | SUB | SUB | SUB | SUB | SUB | SUB | | | | 2xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAX,Iz | ------- | DAS^I64 | | | | | | | | | Hint Not Taken | | | | | | | | | | for Jcc (P4) | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | | | | | | | DS: | | | | CMP | CMP | CMP | CMP | CMP | CMP | CET: (CET) | | | 3xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | AL,Ib | rAX,Iz | ------- | AAS^I64 | | | | | | | | | Hint Taken | | | | | | | | | | for Jcc (P4) | | |----------------------------------------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------------------------------------| | | DEC^I64 eAX[ ] | DEC^I64 eCX | DEC^I64 eDX | DEC^I64 eBX | DEC^I64 eSP | DEC^I64 eBP | DEC^I64 eSI | DEC^I64 eDI | | 4xh |---------------------------------------------------------------------------------------------------------------------------------------| | !REX2 | REX | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | POP^D64 | POP^D64 | POP^D64 | POP^D64 | POP^D64 | POP^D64 | POP^D64 | POP^D64 | | | rAX / r8 / r16 | rCX / r9 / r17 | rDX / r10 / | rBX / r11 / | rSP / r12 / | rBP / r13 / | rSI / r14 / | rDI / r15 / | | 5xh | / r24 | / r25 | r18 / r26 | r19 / r27 | r20 / r28 | r21 / r29 | r22 / r30 | r23 / r31 | | |---------------------------------------------------------------------------------------------------------------------------------------| | | REX2.W1 POPP^F64[ ]Rq | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | PUSH^D64 | IMUL | PUSH^D64 | IMUL | INS | INS | OUTS | OUTS | | 6xh | Iz | Gv,Ev,Iz | Ib | Gv,Ev,Ib | Yb,DX | Yz,DX | DX,Xb | DX,Xz | | | (80186+) | (80186+) | (80186+) | (80186+) | (80186+) | (80186+) | (80186+) | (80186+) | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | JS^Df64 | JNS^Df64 | JP^Df64 | JNP^Df64 | JL^Df64 | JNL^Df64 | JLE^Df64 | JNLE^Df64 | | 7xh | Jb | Jb | Jb | Jb | Jb | Jb | Jb | Jb | | !REX2 | | | | | | | | | |----------------------------------------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------------------------------------| | | MOV | MOV | MOV | MOV | MOV Mw,Sw | LEA Gv,M | MOV Sw,Mw | | | 8xh | Eb,Gb | Ev,Gv | Gb,Eb | Gv,Ev | MOV Rv,Sw | | MOV Sw,Rv | group #1A | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | CBW (8088) | CWD (8088) | CALL^I64 | WAIT | PUSHF^D64 | POPF^D64 | SAHF | LAHF | | 9xh | CWDE (80386+) | CDQ (80386+) | Ap (w:z) | FWAIT | Fv | Fv | (LM: if AHF64) | (LM: if AHF64) | | | CDQE (PM64) | CQO (PM64) | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | TEST | TEST | STOS | STOS | LODS | LODS | SCAS | SCAS | | Axh | AL,Ib | rAX,Iz | Yb,AL | Yv,rAX | AL,Xb | rAX,Xv | Yb,AL | Yv,rAX | | !REX2 | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | MOV rAX,Iv | MOV rCX,Iv | MOV rDX,Iv | MOV rBX,Iv | MOV rSP,Iv | MOV rBP,Iv | MOV rSI,Iv | MOV rDI,Iv | | Bxh | MOV r8,Iv | MOV r9,Iv | MOV r10,Iv | MOV r11,Iv | MOV r12,Iv | MOV r13,Iv | MOV r14,Iv | MOV r15,Iv | | | MOV r16,Iv | MOV r17,Iv | MOV r18,Iv | MOV r19,Iv | MOV r20,Iv | MOV r21,Iv | MOV r22,Iv | MOV r23,Iv | | | MOV r24,Iv | MOV r25,Iv | MOV r26,Iv | MOV r27,Iv | MOV r28,Iv | MOV r29,Iv | MOV r30,Iv | MOV r31,Iv | |----------------------------------------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------------------------------------| | | ENTER^D64 | LEAVE^D64 | RET far | RET far | | INT | | | | Cxh | Iw,Ib | | Iw | | INT3 | Ib | INTO^I64 | IRET | | | (80186+) | (80186+) | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | ESC | ESC | ESC | ESC | ESC | ESC | ESC | ESC | | Dxh | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | CALL^Df64 | JMP^Df64 | JMP^I64 | JMP^Df64 | IN | IN | OUT | OUT | | Exh | Jz | Jz | Ap (w:z) | Jb | AL,DX | eAX,DX | DX,AL | DX,eAX | | !REX2 | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | | | | | | | | | | Fxh | CLC | STC | ^ CLI[ ] | ^ STI[ ] | CLD | STD | group #4 | group #5 | | | | | (F0h) CLX | (F0h) STX | | | INC/DEC | INC/DEC/etc. | | | | | (REX32) | (REX32) | | | | | +----------------------------------------------------------------------------------------------------------------------------------------------------+ --------------------------------------------------------------------- On 8086/8088 processors the following behavior was supported instead. +----------------------------------------------------------------------------------------------------------------------------------------------------+ | | | | | | | | | | | xxh | x0h | x1h | x2h | x3h | x4h | x5h | x6h | x7h | | | | | | | | | | | |----------------------------------------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------------------------------------| | ... | ... | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | JO* | JNO* | JB* | JNB* | JZ* | JNZ* | JBE* | JNBE* | | 6xh | Jb | Jb | Jb | Jb | Jb | Jb | Jb | Jb | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | JO | JNO | JB | JNB | JZ | JNZ | JBE | JNBE | | 7xh | Jb | Jb | Jb | Jb | Jb | Jb | Jb | Jb | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | group #1 | group #1 | group #1* | group #1 | TEST | TEST | XCHG | XCHG | | 8xh | Eb,Ib | Ew,Iw | Eb,Ib | Ew,Ib | Eb,Gb | Ew,Gw | Eb,Gb | Ew,Gw | | | | | | | | | | | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | ... | ... | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | | | | | LES Gw,Mp | LDS Gw,Mp | | | | | | | | | (w:w) | (w:w) | | | | | RET* near | RET* near | RET near | RET near | | | group #11 | group #11 | | Cxh | Iw | | Iw | |----------------+----------------| Eb,Ib | Ew,Iw | | | | | | | LES Gw, | LDS Gw, | | | | | | | | | (IND:TMP) | (IND:TMP) | | | | | | | | | | | | | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | ... | ... | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | | | | REP: | | | group #3 | group #3 | | Fxh | LOCK: | LOCK:* | REPNE: | REPE: | HLT | CMC | Eb | Ew | | | | | | | | | | | +----------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------+ | | | | | | | | | | | xxh | x8h | x9h | xAh | xBh | xCh | xDh | xEh | xFh | | | | | | | | | | | |----------------------------------------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------------------------------------| | ... | ... | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | JS* | JNS* | JP* | JNP* | JL* | JNL* | JLE* | JNLE* | | 6xh | Jb | Jb | Jb | Jb | Jb | Jb | Jb | Jb | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | JS | JNS | JP | JNP | JL | JNL | JLE | JNLE | | 7xh | Jb | Jb | Jb | Jb | Jb | Jb | Jb | Jb | | | | | | | | | | | |------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------| | | | | | | | LEA Gv,M | | | | | MOV | MOV | MOV | MOV | MOV Mw,Sw | | MOV Sw,Mw | | | 8xh | Eb,Gb | Ew,Gw | Gb,Eb | Gw,Ew | MOV Rw,Sw |----------------| MOV Sw,Rw | group #1A | | | | | | | | LEA Gv,IND | | | | | | | | | | | | | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | ... | ... | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | RET* far | RET* far | RET far | RET far | | INT | | | | Cxh | Iw | | Iw | | INT3 | Ib | INTO | IRET | | | | | | | | | | | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | ... | ... | |------------+---------------------------------------------------------------------------------------------------------------------------------------| | | | | | | | | group #4 | group #5 | | Fxh | CLC | STC | CLI | STI | CLD | STD | INC/DEC | INC/DEC/etc. | | | | | | | | | | | +----------------------------------------------------------------------------------------------------------------------------------------------------+ --------------------------------------------------------------------- note: The opcodes marked with * are aliases to other opcodes. --------------------------------------------------------------------- main page (c) 1996-2025 by Christian Ludloff. All rights reserved. Use at your own risk.