OVERZICHT VAN DE 80386-CODE
SUMMARY OF 80386-CODE

d: richting.  Als dit bit 1 is, dan is het datatransport in
omgekeerde richting
d: direction.  When this bit is set, data is moved in the other
direction.
w: woord.  Als dit bit 1 is, dan is de data 16 (of 32) bits
(anders 8).
w: word.  When this bit is sit, data is 16 or 32 bits (8
otherwise)
s: sign-extend.  Als dit bit 1 is, dan is de brondata 8 bits,
waarvan het hoogste bit gepropageerd wordt.
s: sign-extend.  When this bit is set, source data is 8 bits and
the highest bit will be propagated.
rrr: register
cccc: voorwaarde
cccc: condition
M/: mod/rm-byte
I: immediate data




hex       binair               mnemonisch
00 M      0000 00dw            ADD memory,register
04 I      0000 010w            ADD register,immediate
06        0000 011d            PUSH, POP ES
08 M      0000 00dw            OR  memory,register
0C I      0000 010w            OR  register,immediate
0E        0000 0110            PUSH CS
0F        0000 0111            Zie verderop
10 M      0000 00dw            ADC memory,register
14 I      0000 010w            ADC register,immediate
16        0000 011d            PUSH, POP SS
18 M      0000 00dw            SBB memory,register
1C I      0000 010w            SBB register,immediate
1E        0000 011d            PUSH, POP DS
20 M      0000 00dw            AND memory,register
24 I      0000 010w            AND register,immediate
26        0000 0110            ES: prefix
27        0000 0111            DAA
28 M      0000 00dw            SUB memory,register
2C I      0000 010w            SUB register,immediate
2E        0000 0110            CS: prefix
2F        0000 0111            DAS
30 M      0000 00dw            XOR memory,register
34 I      0000 010w            XOR register,immediate
36        0000 0110            SS: prefix
37        0000 0111            AAA
38 M      0000 00dw            CMP memory,register
3C I      0000 010w            CMP register,immediate
3E        0000 0110            DS: prefix
3F        0000 0111            AAS

40        0100 0rrr            INC wordregister
48        0100 1rrr            DEC wordregister
50        0101 drrr            PUSH, POP wordregister
60        0110 000d            PUSHA, POPA
62 M      0110 0010            BOUND wordregister,memory
63 M      0110 0011            ARPL memory,wordregister
64        0110 0100            80386 FS: prefix, NEC REPNC
65        0110 0101            80386 GS: prefix, NEC REPC
66        0110 0110            80386 OS prefix
67        0110 0111            80386 AS prefix
68 I      0110 10s0            PUSH immediate
69 M I    0110 10s1            IMUL register,memory,immediate
6C        0110 11dw            INS, OUTS
70 I      0111 cccc            J voorwaardelijk
80 M/0    1000 00sw ..00 0...  ADD memory,immediate
80 M/1    1000 00sw ..00 1...  OR  memory,immediate
80 M/2    1000 00sw ..01 0...  ADC memory,immediate
80 M/3    1000 00sw ..01 1...  SBB memory,immediate
80 M/4    1000 00sw ..10 0...  AND memory,immediate
80 M/5    1000 00sw ..10 1...  SUB memory,immediate
80 M/6    1000 00sw ..11 0...  XOR memory,immediate
80 M/7    1000 00sw ..11 1...  CMP memory,immediate
82        1000 0010            niet gedefinieerd
84 M      1000 010w            TEST memory,register
86 M      1000 011w            XCHG memory,register
88 M      1000 10dw            MOV memory,register
8C M      1000 11d0            MOV memory,segmentregister
8D M      1000 1101            LEA wordregister,memory
8F M/0    1000 1111 ..00 0...  POP memory
90        1001 0rrr            XCHG AX,wordregister
98        1001 100w            CBW, CWD
9A I      1001 1010            CALL intersegment
9B        1001 1011            WAIT
9C        1001 110d            PUSHF, POPF
9E        1001 111d            SAHF, LAHF
A0 M      1010 00dw            MOV register,memory
A4        1010 010w            MOVS
A6        1010 011w            CMPS
A8 I      1010 100w            TEST AL,immediate, TEST
AX,immediate
AA        1010 101w            STOS 
AC        1010 110w            LODS
AE        1010 111w            SCAS
B0 I      1011 wrrr            MOV register,immediate
C0 M/0 I  1100 000w ..00 0...  ROL memory,immediate
C0 M/1 I  1100 000w ..00 1...  ROR memory,immediate
C0 M/2 I  1100 000w ..01 0...  RCL memory,immediate
C0 M/3 I  1100 000w ..01 1...  RCR memory,immediate
C0 M/4 I  1100 000w ..10 0...  SHL memory,immediate
C0 M/5 I  1100 000w ..10 1...  SHR memory,immediate
C0 M/6 I  1100 000w ..11 0...  niet gedefinieerd
C0 M/7 I  1100 000w ..11 1...  SAR memory,immediate
C2 I      1100 0010            RET immediate
C3        1100 0011            RET
C4 M      1100 0100            LES wordregister,memory
C5 M      1100 0101            LDS wordregister,memory
C6 M/0 I  1100 011w ..00 0...  MOV memory,immediate
C6 M/1    1100 011w ..00 1...  Niet gedefinieerd
C6 M/2    1100 011w ..01 ....  Niet gedefinieerd
C6 M/4    1100 011w ..1. ....  Niet gedefinieerd
C8 I I    1100 1000            ENTER word,byte
C9        1100 1001            LEAVE
CA I      1100 1010            RETF word
CB        1100 1011            RETF
CC        1100 1100            INT 3
CD I      1100 1101            INT byte
CE        1100 1110            INTO
CF        1100 1111            IRET
D0 M/0    1101 000w ..00 0...  ROL memory,1
D0 M/1    1101 000w ..00 1...  ROR memory,1
D0 M/2    1101 000w ..01 0...  RCL memory,1
D0 M/3    1101 000w ..01 1...  RCR memory,1
D0 M/4    1101 000w ..10 0...  SHL memory,1
D0 M/5    1101 000w ..10 1...  SHR memory,1
D0 M/6    1101 000w ..11 0...  niet gedefinieerd
D0 M/7    1101 000w ..11 1...  SAR memory,CL
D2 M/0    1101 001w ..00 0...  ROL memory,CL
D2 M/1    1101 001w ..00 1...  ROR memory,CL
D2 M/2    1101 001w ..01 0...  RCL memory,CL
D2 M/3    1101 001w ..01 1...  RCR memory,CL
D2 M/4    1101 001w ..10 0...  SHL memory,CL
D2 M/5    1101 001w ..10 1...  SHR memory,CL
D2 M/6    1101 001w ..11 0...  niet gedefinieerd
D2 M/7    1101 001w ..11 1...  SAR memory,CL
D4 I      1101 0100            AAM 
D5 I      1101 0101            AAD
D6        1101 0110            ongedefinieerd
D7        1101 0111            XLAT

D8 M/0    1101 1000 ..00 0...  FADD dword
D8 M/1    1101 1000 ..00 1...  FMUL dword
D8 M/2    1101 1000 ..01 0...  FCOM dword
D8 M/3    1101 1000 ..01 1...  FCOMP dword
D8 M/4    1101 1000 ..10 0...  FSUB dword
D8 M/5    1101 1000 ..10 1...  FSUBR dword
D8 M/6    1101 1000 ..11 0...  FDIV dword
D8 M/7    1101 1000 ..11 1...  FDIVR dword
D8 C0     1101 1000 1100 0iii  FADD 0,i
D8 C8     1101 1000 1100 1iii  FMUL 0,i
D8 D0     1101 1000 1101 0iii  FCOM 0,i
D8 D8     1101 1000 1101 1iii  FCOMP 0,i
D8 E0     1101 1000 1110 0iii  FSUB 0,i
D8 E8     1101 1000 1110 1iii  FSUBR 0,i
D8 F0     1101 1000 1111 0iii  FDIV 0,i
D8 F8     1101 1000 1111 1iii  FDIVR 0,i

D9 M/0    1101 1001 ..00 0...  FLD dword
D9 M/1    1101 1001 ..00 1...  niet gedefinieerd
D9 M/2    1101 1001 ..01 0...  FST dword
D9 M/3    1101 1001 ..01 1...  FSTP dword
D9 M/4    1101 1001 ..10 0...  FLDENV dword
D9 M/5    1101 1001 ..10 1...  FLDCW dword
D9 M/6    1101 1001 ..11 0...  FSTENV dword
D9 M/7    1101 1001 ..11 1...  FSTCW dword

D9 C0     1101 1001 1100 0iii  FLD i
D9 C8     1101 1001 1100 1iii  FXCH 0,i
D9 D0     1101 1001 1101 0000  FNOP
D9 D1     1101 1001 1101 iii1  niet gedefinieerd
D9 D2     1101 1001 1101 ii1i  niet gedefinieerd
D9 D4     1101 1001 1101 i1ii  niet gedefinieerd
D9 D8     1101 1001 1101 1iii  niet gedefinieerd
D9 E0     1101 1001 1110 0000  FCHS
D9 E1     1101 1001 1110 0001  FABS
D9 E2     1101 1001 1110 0010  niet gedefinieerd     
D9 E3     1101 1001 1110 0011  niet gedefinieerd
D9 E4     1101 1001 1110 0100  FTST
D9 E5     1101 1001 1110 0101  FXAM
D9 E6     1101 1001 1110 0110  niet gedefinieerd
D9 E7     1101 1001 1110 0111  niet gedefinieerd
D9 E8     1101 1001 1110 1000  FLD1
D9 E9     1101 1001 1110 1001  FLDL2T
D9 EA     1101 1001 1110 1010  FLDL2E
D9 EB     1101 1001 1110 1011  FLDPI 
D9 EC     1101 1001 1110 1100  FLDLG2
D9 ED     1101 1001 1110 1101  FLDLN2
D9 EE     1101 1001 1110 1110  FLDZ  
D9 EF     1101 1001 1110 1111  niet gedefinieerd
D9 F0     1101 1001 1111 0000  F2XM1
D9 F1     1101 1001 1111 0001  FYL2X
D9 F2     1101 1001 1111 0010  FPTAN
D9 F3     1101 1001 1111 0011  FPATAN
D9 F4     1101 1001 1111 0100  FXTRACT
D9 F5     1101 1001 1111 0101  FPREM1 
D9 F6     1101 1001 1111 0110  FDECSTP
D9 F7     1101 1001 1111 0111  FINCSTP
D9 F8     1101 1001 1111 1000  FPREM
D9 F9     1101 1001 1111 1001  FYL2XP1
D9 FA     1101 1001 1111 1010  FSQRT  
D9 FB     1101 1001 1111 1011  FSINCOS
D9 FC     1101 1001 1111 1100  FRNDINT
D9 FD     1101 1001 1111 1101  FSCALE
D9 FE     1101 1001 1111 1110  FSIN
D9 FF     1101 1001 1111 1111  FCOS

DA M/0    1101 1010 ..00 0...  FIADD dword
DA M/1    1101 1010 ..00 1...  FIMUL dword
DA M/2    1101 1010 ..01 0...  FICOM dword
DA M/3    1101 1010 ..01 1...  FICOMP dword
DA M/4    1101 1010 ..10 0...  FISUB dword
DA M/5    1101 1010 ..10 1...  FISUBR dword
DA M/6    1101 1010 ..11 0...  FIDIV dword
DA M/7    1101 1010 ..11 1...  FIDIVR dword
DA C0     1101 1010 110. ....  niet gedefinieerd
DA E0     1101 1010 1110 0...  niet gedefinieerd
DA E0     1101 1010 1110 1000  niet gedefinieerd
DA E9     1101 1010 1110 1001  FUCOMPP
DA EA     1101 1010 1110 1.1.  niet gedefinieerd
DA EC     1101 1010 1110 11..  niet gedefinieerd

DB M/0    1101 1011 ..00 0...  FILD dword
DB M/1    1101 1011 ..00 1...  niet gedefinieerd
DB M/2    1101 1011 ..01 0...  FIST dword
DB M/3    1101 1011 ..01 1...  FISTP dword
DB M/4    1101 1011 ..10 0...
DB M/5    1101 1011 ..10 1...  FLD tword
DB M/6    1101 1011 ..11 0...
DB M/7    1101 1011 ..11 1...  FSTP tword
DB E0     1101 1011 1110 0000  FENI
DB E1     1101 1011 1110 0001  FDISI
DB E2     1101 1011 1110 0010  FCLEX
DB E3     1101 1011 1110 0011  FINIT
DB E4     1101 1011 1110 0100  FSETPM
DB E5     1101 1011 1110 0101  niet gedefinieerd
DB E6     1101 1011 1110 0110  niet gedefinieerd
DB E7     1101 1011 1110 0111  niet gedefinieerd
DB E8     1101 1011 1110 1000  FBANK 0
DB E9     1101 1011 1110 1001  niet gedefinieerd
DB EA     1101 1011 1110 1010  FBANK 2
DB EB     1101 1011 1110 1011  FBANK 1
DB F0     1101 1011 1111 0000  niet gedefinieerd
DB F1     1101 1011 1111 0001  F4X4
DB F2     1101 1011 1111 001.  niet gedefinieerd
DB F4     1101 1011 1111 01..  niet gedefinieerd
DB F8     1101 1011 1111 1...  niet gedefinieerd

DC M/0    1101 1100 ..00 0...  FADD qword
DC M/1    1101 1100 ..00 1...  FMUL qword
DC M/2    1101 1100 ..01 0...  FCOM qword
DC M/3    1101 1100 ..01 1...  FCOMP qword
DC M/4    1101 1100 ..10 0...  FSUB qword
DC M/5    1101 1100 ..10 1...  FSUBR qword
DC M/6    1101 1100 ..11 0...  FDIV qword
DC M/7    1101 1100 ..11 0...  FDIVR qword

DC C0     1101 1100 1100 0rrr  FADD i,0
DC C8     1101 1100 1100 1rrr  FMUL i,0
DC D0     1101 1100 1101 ....  niet gedefinieerd
DC E0     1101 1100 1110 0rrr  FSUBR i,0
DC E8     1101 1100 1101 1...  niet gedefinieerd
DC F0     1101 1100 1111 0rrr  FDIVR i,0
DC F8     1101 1100 1111 1rrr  FDIV i,0

DD M/0    1101 1101 ..00 0...  FLD qword
DD M/1    1101 1101 ..00 1...  niet gedefinieerd
DD M/2    1101 1101 ..01 0...  FST qword
DD M/3    1101 1101 ..01 1...  FSTP qword
DD M/4    1101 1101 ..10 0...  FRSTOR
DD M/5    1101 1101 ..10 1...  niet gedefinieerd
DD M/6    1101 1101 ..11 0...  FSAVE
DD M/7    1101 1101 ..11 1...  FSTSW word
DD C0     1101 1101 1100 0rrr  FFREE i
DD C8     1101 1101 1100 1...  niet gedefinieerd
DD D0     1101 1101 1101 0rrr  FST i
DD D8     1101 1101 1101 1rrr  FSTP i

DD E0     1101 1101 1110 0rrr  FUCOM i
DD E8     1101 1101 1110 1rrr  FUCOMP i
DD F0     1101 1101 1111 0rrr  niet gedefinieerd
DD F8     1101 1101 1111 1rrr  niet gedefinieerd

DE M/0    1101 1110 ..00 0...  FIADD word
DE M/1    1101 1110 ..00 1...  FIMUL word
DE M/2    1101 1110 ..01 0...  FICOM word
DE M/3    1101 1110 ..01 1...  FICOMP word
DE M/4    1101 1110 ..10 0...  FISUB word
DE M/5    1101 1110 ..10 1...  FISUBR word
DE M/6    1101 1110 ..11 0...  FIDIV word
DE M/7    1101 1110 ..11 1...  FIDIVR word
DE C0     1101 1110 1100 0rrr  FADDP i,0
DE C8     1101 1110 1100 1rrr  FMULP i,0

DE D0     1101 1110 1100 0...  niet gedefinieerd
DE D0     1101 1110 1100 1000  niet gedefinieerd
DE D9     1101 1110 1100 1001  FCOMPP
DE DA     1101 1110 1100 1.1.  niet gedefinieerd
DE DC     1101 1110 1100 11..  niet gedefinieerd

DE E0     1101 1110 1110 0rrr  FSUBRP i,0
DE E8     1101 1110 1110 1rrr  FSUBP i,0
DE F0     1101 1110 1111 0rrr  FDIVRP i,0
DE F8     1101 1110 1111 1rrr  FDIVP i,0
DF M/0    1101 1111 ..00 0...  FILD word
DF M/1    1101 1111 ..00 1...  niet gedefinieerd
DF M/2    1101 1111 ..01 0...  FIST word
DF M/3    1101 1111 ..01 1...  FISTP word
DF M/4    1101 1111 ..10 0...  FBLD tword
DF M/5    1101 1111 ..10 1...  FILD qword
DF M/6    1101 1111 ..11 0...  FBSTP tword
DF M/7    1101 1111 ..11 1...  FISTP qword

DF C0     1101 1111 110. ....  niet gedefinieerd
DF E0     1101 1111 1110 0000  FSTSW AX
DF E1     1101 1111 1110 0001  niet gedefinieerd
DF E2     1101 1111 1110 001.  niet gedefinieerd
DF E4     1101 1111 1110 01..  niet gedefinieerd
DF E8     1101 1111 1110 1...  niet gedefinieerd
DF F0     1101 1111 1111 ....  niet gedefinieerd

E0        1110 0000            LOOPNE
E1        1110 0001            LOOPE
E2        1110 0010            LOOP
E3        1110 0011            J(E)CXZ
E4        1110 00dw            IN, OUT (immediate port-address)
E8        1110 1000            CALL
E9        1110 1001            JMP NEAR
EA        1110 1010            JMP FAR
EB        1110 1011            JMP SHORT
EC        1110 11dw            IN, OUT (port-address in DX)
F0        1111 0000            LOCK: prefix
F1        1111 0001            niet gedefinieerd
F2        1111 0010            REPNE: prefix
F3        1111 0011            REPE: prefix
F4        1111 0100            HLT
F5        1111 0101            CMC
F6 M/0    1111 011w ..00 0...  TEST 
F6 M/1    1111 011w ..00 1...  niet gedefinieerd
F6 M/2    1111 011w ..01 0...  NOT
F6 M/3    1111 011w ..01 1...  NEG
F6 M/4    1111 011w ..10 0...  MUL
F6 M/5    1111 011w ..10 1...  IMUL
F6 M/6    1111 011w ..11 0...  DIV
F6 M/7    1111 011w ..11 1...  IDIV
F8        1111 1000            CLC
F9        1111 1001            STC
FA        1111 1010            CLI
FB        1111 1011            STI
FC        1111 1100            CLD
FD        1111 1101            STD
FE M/0    1111 111w ..00 0...  INC
FE M/1    1111 111w ..00 1...  DEC
FE M/2    1111 1110 ..01 ....  niet gedefinieerd
FE M/4    1111 1110 ..1. ....  niet gedefinieerd
FF M/2    1111 1111 ..01 0...  CALL NEAR INDIRECT
FF M/3    1111 1111 ..01 1...  CALL FAR INDIRECT     
FF M/4    1111 1111 ..10 0...  JMP NEAR INDIRECT
FF M/5    1111 1111 ..10 1...  JMP FAR INDIRECT 
FF M/6    1111 1111 ..11 0...  PUSH  
FF M/7    1111 1111 ..11 1...  niet gedefinieerd


instructies die beginnen met 0F

0F 00 M/0 0000 0000 ..00 0...  SLDT
0F 00 M/1 0000 0000 ..00 1...  STR
0F 00 M/2 0000 0000 ..01 0...  LLDT
0F 00 M/3 0000 0000 ..01 1...  LTR
0F 00 M/4 0000 0000 ..10 0...  VERR
0F 00 M/5 0000 0000 ..10 1...  VERW 
0F 01 M/0 0000 0001 ..00 0...  SGDT
0F 01 M/1 0000 0001 ..00 1...  SIDT
0F 01 M/2 0000 0001 ..01 0...  LGDT
0F 01 M/3 0000 0001 ..01 1...  LIDT
0F 01 M/4 0000 0001 ..10 0...  SMSW
0F 01 M/6 0000 0001 ..11 0...  LMSW
0F 02     0000 0010            LAR
0F 03     0000 0011            LSL
0F 05     0000 0101            LOADALL   zie voetnoot
0F 06     0000 0110            CLTS
0F 10     0001 i00w            TESTBIT (NEC)
0F 12     0001 i01w            CLRBIT (NEC)
0F 14     0001 i10w            SETBIT (NEC)
0F 16     0001 i11w            NOTBIT (NEC)
0F 20     0010 00d0            MOV reg,CR       
0F 21     0010 00d1            MOV reg,DR 
0F 24     0010 01d0            MOV reg,TR 
0F 28     0010 1000            ROL4 (NEC)
0F 2A     0010 1010            ROR4 (NEC)
0F 20     0010 0000            ADD4S (NEC)
0F 22     0010 0010            SUB4S (NEC)
0F 26     0010 0110            CMP4S (NEC)
0F 31     0011 i001            STOBITS (NEC)
0F 33     0011 i011            LODBITS (NEC)
0F 80     1000 cccc            J voorwaardelijk
0F 90 M/0 1001 cccc ..00 0...  SET voorwaardelijk
0F A0     1010 000d            PUSH,POP FS       zie voetnoot
0F A2     1010 0010            niet gedefinieerd
0F A3     1010 0011            BT
0F A4     1010 0100            SHLD immediate
0F A5     1010 0101            SHLD CL
0F A8     1010 100d            PUSH,POP GS       zie voetnoot
0F AB     1010 1011            BTS
0F AC     1010 1100            SHRD immediate
0F AD     1010 1101            SHRD CL
0F AF     1010 1111            IMUL
0F B0     1011 000w            ongedefinieerd
0F B2     1011 0010            LSS
0F B3     1011 0011            BTR
0F B4     1011 0100            LFS
0F B5     1011 0101            LGS
0F B6     1011 011w            MOVZX
0F BA M/4 1011 1010 ..10 0...  BT 
0F BA M/5 1011 1010 ..10 1...  BTS
0F BA M/6 1011 1010 ..11 0...  BTR
0F BA M/7 1011 1010 ..11 1...  BTC
0F BB     1011 1011            BTC    
0F BC     1011 1100            BSF
0F BD     1011 1101            BSR
0F BE     1011 111w            MOVSX
0F FF     1111 1111            CALL80 (NEC)


Voetnoten:

LOADALL (0F 05) 00001111 00000101 is een ongedocumenteerde
instructie die alleen op de 80286 werkt.

PUSH/POP segmentregister (0F 80) 00001111 10...00d
In meerdere boeken heb ik gelezen dat deze instructie met alle
segmentregisters werkt.  Dit is niet juist.  Deze instructie
werkt alleen met FS en GS, respectievelijk gecodeerd als 100 en
101.  De opcodes zijn dus (0F A0) 00001111 1010.00d
Probeert men segmentregister CS, DS, ES of SS, dan krijgt men
namelijk de opcodes 00001111 100..00d welke een andere betekenis
hebben.

Footnotes:

LOADALL (0F 05) is an undocumented instruction which works on the
80286 only.

PUSH/POP segment register (0F 80) 00001111 10...00d
In several books I have read that this instruction can work with
any segment register .  This is not correct.  This instruction
works with FS and GS only, and these are coded as 100 and 1001. 
So the opcodes are 00001111 1010.00d
If you try CS, DS, ES or SS, the opcodes would be 00001111
100..00d and these have another meaning.

