diff --git a/InstructionSets/x86/Documentation/80386 opcode map.html b/InstructionSets/x86/Documentation/80386 opcode map.html new file mode 100644 index 000000000..3bd234a0e --- /dev/null +++ b/InstructionSets/x86/Documentation/80386 opcode map.html @@ -0,0 +1,951 @@ + + +
+ +A | +Direct address; the instruction has no MODRM field; the address of the operand is encoded in the instruction; no base register, index register, or scaling factor can be applied; e.g., far JMP (EA). | +
C | +The reg field of the MODRM field selects a control register; e.g., MOV (0F20, 0F22). | +
D | +The reg field of the MODRM field selects a debug register; e.g., MOV (0F21, 0F23). | +
E | +A MODRM field follows the opcode and specifies the operand. The operand is either a general register or a memory address. If it is a memory address, the address is computed from a segment register and any of the following values: a base register, an index register, a scaling factor, a displacement. | +
F | +Flags register | +
G | +The reg field of the MODRM field selects a general register; e.g,. ADD (00). | +
I | +Immediate data. The value of the operand is encoded in subsequent bytes of the instruction. | +
J | +The instruction contains a relative offset to be added to the instruction-pointer register; e.g., JMP short, LOOP. | +
M | +The MODRM field may refer only to memory; e.g., BOUND, LES, LDS, LSS, LFS, LGS. | +
O | +The instruction has no MODRM field; the offset of the operand is coded as a word or dword (depending on address sie attribute) in the instruction. No base register, index register, or scaling factor can be applied; e.g., MOV (A0–A3). | +
R | +The mod field of the MODRM field may refer only to a general register; e.g., MOV(0F20–0F24, 0F26). | +
S | +The reg field of the MODRM field selects a segment register; e.g., MOV (8C, 8E). | +
T | +The reg field of the MODRM field selects a test register; e.g., MOV (0F24, 0F26). | +
X | +Memory addressed by DS:SI; e.g., MOVS, COMPS, OUTS, LODS, SCAS. | +
Y | +Memory addressed by ES:DI; e.g., MOVS, CMPS, INS, STOS. | +
a | +Two one-word operands in memory or two dword operands in memory, depending on operand size attribute (used only by BOUND). | +
b | +Byte (regardless of operand size attribute). | +
c | +Byte or word, depending on operand size attribute. | +
d | +Dword (regardless of operand size attribute). | +
p | +32-bit or 48-bit pointer, depending on operand size attribute. | +
s | +Six-byte pesudo-descriptor. | +
v | +Word or dword, depending on operand size attribute. | +
w | +Word (regardless of operand size attribute). | +
+ | 0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +A | +B | +C | +D | +E | +F | +
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | + +ADD | +PUSH ES | +POP ES | +OR | +PUSH CS | +2-byte escape codes | +||||||||||
Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | + + +Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | +|||||
1 | + +ADC | +PUSH SS | +POP SS | +SBB | +PUSH DS | +POP DS | +||||||||||
Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | + + +Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | +|||||
2 | + +AND | +SEG =ES | +POP ES | +SUB | +SEG =CS | +DAS | +||||||||||
Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | + + +Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | +|||||
3 | + +XOR | +SEG =SS | +AAA | +CMP | +SEG =DS | +AAS | +||||||||||
Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | + + +Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +AL, Ib | +eAX, Iv | +|||||
4 | + +INC general register | +DEC general register | +||||||||||||||
eAX | +eCX | +eDX | +eBX | +eSP | +eBP | +eSI | +eDI | + + +eAX | +eCX | +eDX | +eBX | +eSP | +eBP | +eSI | +eDI | +|
5 | + +PUSH general register | +POP general register | +||||||||||||||
eAX | +eCX | +eDX | +eBX | +eSP | +eBP | +eSI | +eDI | + + +eAX | +eCX | +eDX | +eBX | +eSP | +eBP | +eSI | +eDI | +|
6 | + +PUSHA | +POPA | +BOUND Gv, Ma | +ARPL Gv, Ma | +SEG =FS | +SEG =GS | +Operand Size | +Address Size | +PUSH Iv | +IMUL GvEvIv | +PUSH Ib | +IMUL GvEvIb | +INSB Yb, Dx | +INSW/D Yv, Dx | +OUTSB Dx, Xb | +OUTSW/D Dx, Xb | +
7 | + +Short-displacement jump on condition (Jb) | +|||||||||||||||
JO | +JNO | +JB | +JNB | +JZ | +JNZ | +JBE | +JNBE | +JS | +JNS | +JP | +JNP | +JP | +JNL | +JLE | +JNLE | +|
8 | + +Immediate Grp1 | ++ | Grp1 Ev, Ib | +TEST | +XCHG | +MOV | +MOV Ew, Sw | +LEA Gv, M | +MOV Sw, Ew | +POP Ev | +||||||
Eb, Ib | +Ev, Iv | + + +Eb, Gb | +Ev, Gv | + + +Eb, Gb | +Ev, Gv | + + +Eb, Gb | +Ev, Gv | +Gb, Eb | +Gv, Ev | +|||||||
9 | + +NOP | +XCHG word or double-word register with eAX | +CBW | +CWD | +CALL Ap | +WAIT | +PUSHF Fv | +POPF Fv | +SAHF | +LAHF | +||||||
eCX | +eDX | +eBX | +eSP | +eBP | +eSI | +eDI | +||||||||||
A | + +MOV | +MOVSB Xb, Yv | +MOVSW/D Xv, Yv | +CMPSB Xb, Yb | +CMPSW/D Xv, Yv | +TEST | +STOSB Yb, AL | +STOSW/D Yv, eAX | +LDSB AL, Xb | +LDSW/D eAX, Yv | +SCASB AL, Xb | +SCASW/D eAX, Xv | +||||
AL, Ob | +eAX, Ov | +Ob, AL | +Ov, eAX | + + +AL, Ib | +eAX, Iv | +|||||||||||
B | + +MOV immediate byte into byte register | +MOV immediate word or double into word or double register | +||||||||||||||
AL | +CL | +DL | +BL | +AH | +CH | +DH | +BH | + +eAX | +eCX | +eDX | +eBX | +eSP | +eBP | +eSI | +eDI | +|
C | + +Shift Grp2 | +RET near | +LES Gv, Mp | +LDS Gv, Mp | +MOV | +ENTER | +LEAVE | +RET far | +INT 3 | +INT Ib | +INTO | +IRET | +||||
Eb, Ib | +Ev, Iv | +Iw | ++ | Eb, Ib | +Ev, Iv | +Iw | ++ | |||||||||
D | + +Shift Grp2 | +AAM | +AAD | ++ | XLAT | +ESC (Escape to coprocessor instruction set) | +||||||||||
Eb, 1 | +Ev, 1 | +Eb, CL | +Ev, CL | +|||||||||||||
E | + +LOOPNE Jb | +LOOPE Jb | +LOOP Jb | +JCXZ Jb | +IN | +OUT | +CALL Av | +JMP | +IN | +OUT | +||||||
AL, Ib | +eAX, Ib | + + +Ib, AL | +Ib, eAX | + + +Jv | +Ap | +Jb | + + +AL, DX | +eAX, DX | + + +DX, AL | +DX, eAX | +||||||
F | + +LOCK | ++ | REPNE | +REP / REPE | +HLT | +CMC | +Unary Grp3 | +CLC | +STC | +CLI | +STI | +CLD | +STD | +INC/DEC Grp4 | +Indirect Grp5 | +|
Eb | +Ev | +
+ | 0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +A | +B | +C | +D | +E | +F | +
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | + +Grp6 | +Grp7 | +LAR Gv, Ew | +LSL Gv, Ew | ++ | + | CLTS | ++ | + | + | + | + | + | + | + | + |
1 | + ++ | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
2 | + +MOV Cr, Rd | +MOV Dd, Rd | +MOV Rd, Cd | +MOV Rd, Dd | +MOV Td, Rd | ++ | MOV Rd, Td | ++ | + | + | + | + | + | + | + | + |
≈ | + +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +
8 | + +Long-displacement jump on condition (Jv) | +|||||||||||||||
JO | +JNO | +JB | +JNB | +JZ | +JNZ | +JBE | +JNBE | +JS | +JNS | +JP | +JNP | +JP | +JNL | +JLE | +JNLE | +|
9 | + +Byte set on condition (Eb) | +SETS | +SETNS | +SETP | +SETNP | +SETL | +SETNL | +SETLE | +SETNLE | +|||||||
SETO | +SETNO | +SETB | +SETNB | +SETZ | +SETNZ | +SETBE | +SETNBE | +|||||||||
A | + +PUSH FS | +POP FS | ++ | BT Ev, Gv | +SHLD EvGvIb | +SHLD EvGcCL | ++ | + | PUSH GS | +POP GS | ++ | BTS Ev, Gv | +SHRD EvGvIb | +SHRD EvGvCL | ++ | IMUL Gv, Ev | +
B | + ++ | + | LSS Mp | +BTR Ev, Gv | +LFS Mp | +LGS Mp | +MOVZX | ++ | + | Grp8 Ev, Ib | +BTC Ev, Gv | +BSF Gv, Ev | +BSR Gv, Ev | +MOVSX | +||
Gv, Eb | +Gv, Ew | + + +Gv, Eb | +Gv, Ew | +|||||||||||||
≈ | + +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +≈ | +
F | + ++ | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
mod | +nnn | +R/M | +
+ | 000 | +001 | +010 | +011 | +100 | +101 | +110 | +111 | +
---|---|---|---|---|---|---|---|---|
Group 1 | + +ADD | +OR | +ADC | +SBB | +AND | +SUB | +XOR | +CMP | +
Group 2 | + +ROL | +ROR | +RCL | +RCR | +SHL | +SHR | ++ | SAR | +
Group 3 | + +TEST Ib/Iv | ++ | NOT | +NEG | +MUL AL/eAX | +IMUL AL/EAX | +DIV AL/eAX | +IDIV AL/eAX | +
Group 4 | + +INC Eb | +DEC Eb | ++ | + | + | + | + | + |
Group 5 | + +INC Ev | +DEC Ev | +CALL Ev | +CALL Ep | +JMP Ev | +JMP Ep | +PUSH Ev | ++ |
Group 6 | + +SLDT Ew | +STR Ew | +LLDT Ew | +LTR Ew | +VERR Ew | +VERW Ew | ++ | + |
Group 7 | + +SGDT Ms | +SIDT Ms | +LGDT Ms | +LIDT Ms | ++ | LMSW Ew | ++ | + |
Group 6 | + ++ | + | + | + | BT | +BTS | +BTR | +BTC | +