Docs for Intel 80386 CPU

This commit is contained in:
The Blue Wizard 2016-06-12 22:59:37 -04:00
parent df42e92715
commit 573f0d7d00
5 changed files with 20892 additions and 0 deletions

283
386Intel/386INTEL.APA Normal file
View File

@ -0,0 +1,283 @@
Appendix A Opcode Map
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
The opcode tables that follow aid in interpreting 80386 object code. Use
the high-order four bits of the opcode as an index to a row of the opcode
table; use the low-order four bits as an index to a column of the table. If
the opcode is 0FH, refer to the two-byte opcode table and use the second
byte of the opcode to index the rows and columns of that table.
Key to Abbreviations
Operands are identified by a two-character code of the form Zz. The first
character, an uppercase letter, specifies the addressing method; the second
character, a lowercase letter, specifies the type of operand.
Codes for Addressing Method
A Direct address; the instruction has no modR/M byte; 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 modR/M byte selects a control register; e.g., MOV
(0F20, 0F22).
D The reg field of the modR/M byte selects a debug register; e.g., MOV
(0F21,0F23).
E A modR/M byte 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 modR/M byte 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 modR/M byte may refer only to memory; e.g., BOUND, LES, LDS, LSS,
LFS, LGS.
O The instruction has no modR/M byte; the offset of the operand is coded as
a word or double word (depending on address size 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 modR/M byte may refer only to a general register;
e.g., MOV (0F20-0F24, 0F26).
S The reg field of the modR/M byte selects a segment register; e.g., MOV
(8C,8E).
T The reg field of the modR/M byte 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.
Codes for Operant Type
a Two one-word operands in memory or two double-word 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 Double word (regardless of operand size attribute)
p 32-bit or 48-bit pointer, depending on operand size attribute.
s Six-byte pseudo-descriptor
v Word or double word, depending on operand size attribute.
w Word (regardless of operand size attribute)
Register Codes
When an operand is a specific register encoded in the opcode, the register
is identified by its name; e.g., AX, CL, or ESI. The name of the register
indicates whether the register is 32-, 16-, or 8-bits wide. A register
identifier of the form eXX is used when the width of the register depends on
the operand size attribute; for example, eAX indicates that the AX register
is used when the operand size attribute is 16 and the EAX register is used
when the operand size attribute is 32.
One-Byte Opcode Map
0 1 2 3 4 5 6 7 8 9 A B C D E F
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÍ»
º ADD ³PUSH ³ POP ³ OR ³ PUSH ³2-byte º
ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³ ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄ´ ³ º
0ºEb,Gb ³Ev,Gv ³Gb,Eb³Gv,Ev ³AL,Ib³ eAX,Iv³ ES ³ ES ³ Eb,Gb³Ev,Gv ³Gb,Eb³ Gv,Ev ³AL,Ib ³eAX,Iv³ CS ³escape º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍ͹
º ADC ³PUSH ³ POP ³ SBB ³ PUSH ³ POP º
1ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³ ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄ´ ³ º
ºEb,Gb ³Ev,Gv ³Gb,Eb³Gv,Ev ³AL,Ib³ eAX,Iv³ SS ³ SS ³Eb,Gb ³Ev,Gv ³Gb,Eb³ Gv,Ev ³AL,Ib ³eAX,Iv³ DS ³ DS º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍ͹
º AND ³ SEG ³ ³ SUB ³ SEG ³ º
2ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³ DAA ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄ´ ³ DAS º
ºEb,Gb ³Ev,Gv ³Gb,Eb³Gv,Ev ³AL,Ib³ eAX,Iv³ =ES ³ ³ Eb,Gb³Ev,Gv ³Gb,Eb³ Gv,Ev ³AL,Ib ³eAX,Iv³ =CS ³ º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍ͹
º XOR ³ SEG ³ ³ CMP ³ SEG ³ º
3ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³ AAA ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄ´ ³ AAS º
ºEb,Gb ³Ev,Gv ³Gb,Eb³Gv,Ev ³AL,Ib³ eAX,Iv³ =SS ³ ³ Eb,Gb³Ev,Gv ³Gb,Eb³ Gv,Ev ³AL,Ib ³eAX,Iv³ =CS ³ º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍ͹
º INC general register ³ DEC general register º
4ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄĶ
º eAX ³ eCX ³ eDX ³ eBX ³ eSP ³ eBP ³ eSI ³ eDI ³eAX ³ eCX ³ eDX ³ eBX ³ eSP ³ eBP ³ eSI³ eDI º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍ͹
º PUSH general register ³ POP into general register º
5ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄĶ
º eAX ³ eCX ³ eDX ³eBX ³ eSP³ eBP³ eSI ³ eDI ³eAX ³ eCX ³ eDX ³ eBX ³ eSP ³ eBP ³ eSI ³ eDI º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍ͹
º ³ ³BOUND³ARPL ³ SEG ³ SEG ³Operand³Address³ PUSH ³IMUL ³PUSH ³IMUL ³ INSB ³INSW/D³ OUTSB³OUTSW/Dº
6ºPUSHA ³ POPA ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³Gv,Ma³ Ew,Rw³ =FS ³ =GS ³ Size ³ Size ³ Ib ³GvEvIv³ Ib ³GvEvIv ³Yb,DX ³ Yb,DX³ Dx,Xb³ DX,Xv º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍ͹
º Short displacement jump of condition (Jb) ³ Short-displacement jump on condition(Jb) º
7ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄĶ
º JO ³ JNO ³ JB ³JNB ³ JZ ³ JNZ ³ JBE ³ JNBE ³ JS ³ JNS ³ JP ³ JNP ³ JL ³ JNL ³ JLE ³ JNLE º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍ͹
ºImmediate Grpl³ ³Grpl ³ TEST ³ XCNG ³ MOV ³ MOV ³ LEA ³MOV ³ POP º
8ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³ ÃÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³ ³ ³ º
ºEb,Ib ³ Ev,Iv ³ ³Ev,Iv ³Eb,Gb³ Ev,Gv ³Eb,Gb³ Ev,Gv³Eb,Gb ³Ev,Gv ³Gb,Eb³ Gv,Ev ³Ew,Sw ³ Gv,M ³Sw,Ew³ Ev º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍ͹
º ³ XCHG word or double-word register with eAX ³ ³ ³ CALL³ ³PUSHF ³ POPF ³ ³ º
9º NOP ÃÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄ´ CBW ³ CWD ³ ³ WAIT ³ ³ ³ SAHF³ LAHF º
º ³ eCX ³ eDX ³ eBX ³ eSP ³ eBP ³ eSI ³ eDI ³ ³ ³ Ap ³ ³ Fv ³ Fv ³ ³ º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍ͹
º MOV ³MOVSB³MOVSW/D³CMPSB³CMPSW/D³ TEST ³STOSB³STOSW/D³ LODSB³LODSW/D³SCASB³SCASW/Dº
AÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄ´ ³ ³ ³ ÃÄÄÄÄÄÄÂÄÄÄÄÄÄ´ ³ ³ ³ ³ ³ º
ºAL,Ob ³eAX,Ov ³Ob,AL³Ov,eAX³Xb,Yb³Xv,Yv ³Xb,Yb³ Xv,Yv ³AL,Ib ³eAX,Iv³Yb,AL³ Yv,eAX³ AL,Xb³ eAX,Xv³AL,Xb³eAX,Xv º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍ͹
º MOV immediate byte into byte register ³MOV immediate word or duble into word or double registerº
BÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄĶ
º AL ³ CL ³ DL ³ BL ³ AH ³ CH ³ DH ³ BH ³ eAX ³ eCX ³ eDX ³ eBX ³ eSP ³ eBP ³ eSI ³ eDI º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍ͹
º Shift Grp2 ³ RET near ³ LES ³ LDS ³ MOV ³ENTER ³ ³ RET far ³ INT ³ INT ³ ³ º
CÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÄ´ ³ ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³LEAVE ÃÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ³ ³INTO ³ IRET º
ºEb,Ib ³ Ev,Iv ³ Iw ³ ³Gv,Mp³Gv,Mp ³ Eb,Ib³ Ev,Iv ³Iw,Ib ³ ³ Iw ³ ³ 3 ³ Ib ³ ³ º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍ͹
º Shift Grp2 ³ ³ ³ ³ ³ º
DÇÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄ´ AAM ³ AAD ³ ³ XLAT ³ ESC(Escape to coprocessor instruction set) º
º Eb,1 ³ Ev,1 ³Eb,CL³Ev,CL ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
ºLOOPNE³ LOOPE ³LOOP ³ JCXZ ³ IN ³ OUT ³ CALL ³ JNP ³ IN ³ OUT º
Eº ³ ³ ³ ÃÄÄÄÄÄÂÄÄÄÄÄÄÅÄÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ÃÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÄÅÄÄÄÄÄÄÄÂÄÄÄÄÄÄĶ
º Jb ³ Jb ³ Jb ³ Jb ³AL,Ib³eAX,Ib³ Ib,AL³Ib,eAX ³ Av ³ Jv ³ Ap ³ Jb ³AL,DX³eAX,DX³ DX,AL ³DX,eAX º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍÍ͹
º ³ ³ ³ REP ³ ³ ³ Unary Grp3 ³ ³ ³ ³ ³ ³ ³INC/DEC³Indirctº
Fº LOCK ³ ³REPNE³ ³ HLT ³ CMC ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄ´ CLC ³ STC ³ CLI ³ STI ³ CLD ³ STD ³ ³ º
º ³ ³ ³ REPE ³ ³ ³ Eb ³ Ev ³ ³ ³ ³ ³ ³ ³ Grp4 ³ Grp5 º
ÈÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍͼ
Two-Byte Opcode Map (first byte is 0FH)
0 1 2 3 4 5 6 7 8 9 A B C D E F
ÉÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍ»
º ³ ³ LAR ³ LSL ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
0º Grp6 ³Grp7 ³ ³ ³ ³ ³ CLTS³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ Gw,Ew³ Gv,Ew³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
1º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º MOV ³ MOV ³ MOV ³ MOV ³ MOV ³ ³ MOV ³ ³ ³ ³ ³ ³ ³ ³ ³ º
2º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º Cd,Rd³ Dd,Rd³ Rd,Cd³ Rd,Dd³ Td,Rd³ ³Rd,Td³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
3º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
4º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
5º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
6º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
7º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍØÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍ͹
º Long-displacement jump on condition (Jv) ³ Long-displacement jump on condition (Jv) º
8ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄĶ
º JO ³ JNO ³ JB ³ JNB ³ JZ ³ JNZ ³ JBE ³ JNBE³ JS ³ JNS ³ JP ³ JNP ³ JL ³ JNL ³ JLE ³JNLE º
ÌÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º Byte Set on condition (Eb) ³ ³ ³ ³ ³ ³ ³ ³ º
9ÇÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄ´ SETS³ SETNS³ SETP ³ SETNP³ SETL ³SETNL ³SETLE³SETNLEº
º SETO ³ SETNO³ SETB ³SETNB ³ SETZ ³ SETNZ³SETBE³SETNBE³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º PUSH ³ POP ³ ³ BT ³ SHLD ³ SHLD³ ³ ³ PUSH ³ POP ³ ³ BTS ³ SHRD ³ SHRD ³ ³ IMUL º
Aº ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º FS ³ FS ³ ³ Ev,Gv³EvGvIb³EvGvCL³ ³ ³ GS ³ GS ³ ³ Ev,Gv³EvGvIb³EvGvCL³ ³ Gv,Evº
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÏÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÏÍÍÍÍÍ͹
º ³ ³ LSS ³ BTR ³ LFS ³ LGS ³ MOVZX ³ ³ ³ Grp-8³ BTC ³ BSF ³ BSR ³ MOVSX º
Bº ³ ³ ³ ³ ³ ÃÄÄÄÄÄÂÄÄÄÄÄ´ ³ ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄĶ
º ³ ³ Mp ³ Ev,Gv³ Mp ³ Mp ³Gv,Eb³Gv,Ew³ ³ ³ Ev,Ib³ Ev,Gv³Gv,Ev ³ Gv,Ev³Gv,Eb Gv,Ewº
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÑÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
Cº ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
Dº ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
Eº ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÌÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍ͹
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
Fº ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
º ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ º
ÈÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍͼ
Opcodes determined by bits 5,4,3 of modR/M byte:
G ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄ¿
r ³ mod ³ nnn ³ R/M ³
o ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÙ
u
p 000 001 010 011 100 101 110 111
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄ¿
1³ ADD ³ OR ³ ADC ³ SBB ³ AND ³ SUB ³ XOR ³ CMP ³
³ ³ ³ ³ ³ ³ ³ ³ ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
2³ ROL ³ ROR ³ RCL ³ RCR ³ SHL ³ SHR ³ ³ SAR ³
³ ³ ³ ³ ³ ³ ³ ³ ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
3³ TEST ³ ³ NOT ³ NEG ³ MUL ³ IMUL ³ DIV ³ IDIV ³
³ Ib/Iv ³ ³ ³ ³AL/eAX ³AL/eAX ³AL/eAX ³AL/eAX ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
4³ INC ³ DEC ³ ³ ³ ³ ³ ³ ³
³ Eb ³ Eb ³ ³ ³ ³ ³ ³ ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
5³ INC ³ DEC ³ CALL ³ CALL ³ JMP ³ JMP ³ PUSH ³ ³
³ Ev ³ Ev ³ Ev ³ eP ³ Ev ³ Ep ³ Ev ³ ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÙ
Opcodes determined by bits 5,4,3 of modR/M byte:
G ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄ¿
r ³ mod ³ nnn ³ R/M ³
o ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÙ
u
p 000 001 010 011 100 101 110 111
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄ¿
6³ SLDT ³ STR ³ LLDT ³ LTR ³ VERR ³ VERW ³ ³ ³
³ Ew ³ Ew ³ Ew ³ Ew ³ Ew ³ Ew ³ ³ ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
7³ SGDT ³ SIDT ³ LGDT ³ LIDT ³ SMSW ³ ³ LMSW ³ ³
³ Ms ³ Ms ³ Ms ³ Ms ³ Ew ³ ³ Ew ³ ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
8³ ³ ³ ³ ³ BT ³ BTS ³ BTR ³ BTC ³
³ ³ ³ ³ ³ ³ ³ ³ ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÙ

247
386Intel/386INTEL.APB Normal file
View File

@ -0,0 +1,247 @@
Appendix B Complete Flag Cross-Reference
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Key to Codes
T = instruction tests flag
M = instruction modifies flag
(either sets or resets depending on operands)
0 = instruction resets flag
1 = instruction sets flag
ÄÄ = instruction's effect on flag is undefined
R = instruction restores prior value of flag
blank = instruction does not affect flag
Instruction OF SF ZF AF PF CF TF IF DF NT RF
AAA ÄÄ ÄÄ ÄÄ TM ÄÄ M
AAD ÄÄ M M ÄÄ M ÄÄ
AAM ÄÄ M M ÄÄ M ÄÄ
AAS ÄÄ ÄÄ ÄÄ TM ÄÄ M
ADC M M M M M TM
ADD M M M M M M
AND 0 M M ÄÄ M 0
ARPL M
BOUND
BSF/BSR ÄÄ ÄÄ M ÄÄ ÄÄ ÄÄ
BT/BTS/BTR/BTC ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ M
CALL
CBW
CLC 0
CLD 0
CLI 0
CLTS
CMC M
CMP M M M M M M
CMPS M M M M M M T
CWD
DAA ÄÄ M M TM M TM
DAS ÄÄ M M TM M TM
DEC M M M M M
DIV ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ
ENTER
ESC
HLT
IDIV ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ
IMUL M ÄÄ ÄÄ ÄÄ ÄÄ M
IN
INC M M M M M
INS T
INT 0 0
INTO T 0 0
IRET R R R R R R R R R T
Jcond T T T T T
JCXZ
JMP
LAHF
LAR M
LDS/LES/LSS/LFS/LGS
LEA
LEAVE
LGDT/LIDT/LLDT/LMSW
LOCK
LODS T
LOOP
LOOPE/LOOPNE T
LSL M
LTR
MOV
MOV control, debug ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ
MOVS T
MOVSX/MOVZX
MUL M ÄÄ ÄÄ ÄÄ ÄÄ M
NEG M M M M M M
NOP
NOT
OR 0 M M ÄÄ M 0
OUT
OUTS T
POP/POPA
POPF R R R R R R R R R R
PUSH/PUSHA/PUSHF
RCL/RCR 1 M TM
RCL/RCR count ÄÄ TM
REP/REPE/REPNE
RET
ROL/ROR 1 M M
ROL/ROR count ÄÄ M
SAHF R R R R R
SAL/SAR/SHL/SHR 1 M M M ÄÄ M M
SAL/SAR/SHL/SHR count ÄÄ M M ÄÄ M M
SBB M M M M M TM
SCAS M M M M M M T
SET cond T T T T T
SGDT/SIDT/SLDT/SMSW
SHLD/SHRD ÄÄ M M ÄÄ M M
STC 1
STD 1
STI 1
STOS T
STR
SUB M M M M M M
TEST 0 M M ÄÄ M 0
VERR/VERRW M
WAIT
XCHG
XLAT
XOR 0 M M ÄÄ M 0
Appendix C Status Flag Summary
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Status Flags' Functions
Bit Name Function
0 CF Carry Flag ÄÄ Set on high-order bit carry or borrow; cleared
otherwise.
2 PF Parity Flag ÄÄ Set if low-order eight bits of result contain
an even number of 1 bits; cleared otherwise.
4 AF Adjust flag ÄÄ Set on carry from or borrow to the low order
four bits of AL; cleared otherwise. Used for decimal
arithmetic.
6 ZF Zero Flag ÄÄ Set if result is zero; cleared otherwise.
7 SF Sign Flag ÄÄ Set equal to high-order bit of result (0 is
positive, 1 if negative).
11 OF Overflow Flag ÄÄ Set if result is too large a positive number
or too small a negative number (excluding sign-bit) to fit in
destination operand; cleared otherwise.
Key to Codes
T = instruction tests flag
M = instruction modifies flag
(either sets or resets depending on operands)
0 = instruction resets flag
ÄÄ = instruction's effect on flag is undefined
blank = instruction does not affect flag
Instruction OF SF ZF AF PF CF
AAA ÄÄ ÄÄ ÄÄ TM ÄÄ M
AAS ÄÄ ÄÄ ÄÄ TM ÄÄ M
AAD ÄÄ M M ÄÄ M ÄÄ
AAM ÄÄ M M ÄÄ M ÄÄ
DAA ÄÄ M M TM M TM
DAS ÄÄ M M TM M TM
ADC M M M M M TM
ADD M M M M M M
SBB M M M M M TM
SUB M M M M M M
CMP M M M M M M
CMPS M M M M M M
SCAS M M M M M M
NEG M M M M M M
DEC M M M M M
INC M M M M M
IMUL M ÄÄ ÄÄ ÄÄ ÄÄ M
MUL M ÄÄ ÄÄ ÄÄ ÄÄ M
RCL/RCR 1 M TM
RCL/RCR count ÄÄ TM
ROL/ROR 1 M M
ROL/ROR count ÄÄ M
SAL/SAR/SHL/SHR 1 M M M ÄÄ M M
SAL/SAR/SHL/SHR count ÄÄ M M ÄÄ M M
SHLD/SHRD ÄÄ M M ÄÄ M M
BSF/BSR ÄÄ ÄÄ M ÄÄ ÄÄ ÄÄ
BT/BTS/BTR/BTC ÄÄ ÄÄ ÄÄ ÄÄ ÄÄ M
AND 0 M M ÄÄ M 0
OR 0 M M ÄÄ M 0
TEST 0 M M ÄÄ M 0
XOR 0 M M ÄÄ M 0
Appendix D Condition Codes
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Note:
The terms "above" and "below" refer to the relation between two
unsigned values (neither SF nor OF is tested). The terms "greater" and
"less" refer to the relation between two signed values (SF and OF are
tested).
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Definition of Conditions
(For conditional instructions Jcond, and SETcond)
Instruction Condition
Mnemonic Meaning Subcode Tested
O Overflow 0000 OF = 1
NO No overflow 0001 OF = 0
B Below
NAE Neither above nor equal 0010 CF = 1
NB Not below
AE Above or equal 0011 CF = 0
E Equal
Z Zero 0100 ZF = 1
NE Not equal
NZ Not zero 0101 ZF = 0
BE Below or equal
NA Not above 0110 (CF or ZF) = 1
NBE Neither below nor equal
NA Above 0111 (CF or ZF) = 0
S Sign 1000 SF = 1
NS No sign 1001 SF = 0
P Parity
PE Parity even 1010 PF = 1
NP No parity
PO Parity odd 1011 PF = 0
L Less
NGE Neither greater nor equal 1100 (SF xor OF) = 1
NL Not less
GE Greater or equal 1101 (SF xor OF) = 0
LE Less or equal
NG Not greater 1110 ((SF xor OF) or ZF) = 1
NLE Neither less nor equal
G Greater 1111 ((SF xor OF) or ZF) = 0

10429
386Intel/386INTEL.PT1 Normal file

File diff suppressed because it is too large Load Diff

9919
386Intel/386INTEL.PT2 Normal file

File diff suppressed because it is too large Load Diff

14
386Intel/README.md Normal file
View File

@ -0,0 +1,14 @@
This subfolder contains the documents and other stuff for Intel 80386 family.
[Main Wikipedia article on this family](https://en.wikipedia.org/wiki/Intel_80386)
The files were given to me (@The-Blue-Wizard) by my friend a long time ago, and the original source for it is unknown.
These files are typed in IBM PC ASCII (code 437), so these are best viewed using that character set. See https://en.wikipedia.org/wiki/Code_page_437 for information on that character set.
| Files | Description |
| ----- | ----------- |
| 386INTEL.PT1 | Intel 80386 manual, Part 1 |
| 386INTEL.PT2 | Intel 80386 manual, Part 2 |
| 386INTEL.APA | Intel 80386 manual, Appendix A |
| 386INTEL.APB | Intel 80386 manual, Appendix B |