mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
427 lines
7.8 KiB
Plaintext
427 lines
7.8 KiB
Plaintext
$title('instruction table for 8086 disassembler')
|
|
$date(10/5/80)
|
|
|
|
instr86: do;
|
|
|
|
declare
|
|
qq$in literally '0',
|
|
alt1 literally '0',
|
|
alt2 literally '1',
|
|
alt3 literally '2',
|
|
alt4 literally '3',
|
|
alt5 literally '4',
|
|
alt6 literally '5',
|
|
alt7 literally '6',
|
|
alt8 literally '7';
|
|
|
|
$include(optab.lit)
|
|
|
|
declare
|
|
type$0 literally '0',
|
|
type$1 literally '1',
|
|
type$2 literally '2',
|
|
type$3 literally '3',
|
|
type$4 literally '4',
|
|
type$5 literally '5',
|
|
type$6 literally '6',
|
|
type$7 literally '7',
|
|
type$8 literally '7',
|
|
type$9 literally '7',
|
|
type$10 literally '8',
|
|
type$11 literally '9',
|
|
type$12 literally '10',
|
|
type$13 literally '11',
|
|
type$14 literally '12',
|
|
type$15 literally '12',
|
|
type$16 literally '12',
|
|
type$17 literally '12',
|
|
type$18 literally '13',
|
|
type$19 literally '13',
|
|
type$20 literally '13',
|
|
type$21 literally '13',
|
|
type$22 literally '14',
|
|
type$23 literally '15',
|
|
type$24 literally '15',
|
|
type$25 literally '16',
|
|
type$26 literally '16',
|
|
type$27 literally '17',
|
|
type$28 literally '17',
|
|
type$29 literally '17',
|
|
type$30 literally '17',
|
|
type$31 literally '18',
|
|
type$32 literally '18',
|
|
type$33 literally '19',
|
|
type$34 literally '20',
|
|
type$35 literally '20',
|
|
type$36 literally '21',
|
|
type$37 literally '21',
|
|
type$38 literally '22',
|
|
type$39 literally '23',
|
|
type$40 literally '24',
|
|
type$41 literally '24',
|
|
type$42 literally '25',
|
|
type$43 literally '26',
|
|
type$44 literally '27',
|
|
type$45 literally '28';
|
|
|
|
declare
|
|
prefix$type literally '0ffh';
|
|
|
|
declare alt$table$ptrs (8) address public data (
|
|
.alt$1$tab,
|
|
.alt$2$tab,
|
|
.alt$3$tab,
|
|
.alt$4$tab,
|
|
.alt$5$tab,
|
|
.alt$6$tab,
|
|
.alt$7$tab,
|
|
.alt$8$tab);
|
|
|
|
declare alt$1$tab (*) byte data (
|
|
add$in, type$44,
|
|
or$in, type$34,
|
|
adc$in, type$44,
|
|
sbb$in, type$44,
|
|
and$in, type$34,
|
|
sub$in, type$44,
|
|
xor$in, type$34,
|
|
cmp$in, type$44);
|
|
|
|
declare alt$2$tab (*) byte data (
|
|
add$in, type$44,
|
|
qq$in, type$0,
|
|
adc$in, type$44,
|
|
sbb$in, type$44,
|
|
qq$in, type$0,
|
|
sub$in, type$44,
|
|
qq$in, type$0,
|
|
cmp$in, type$44);
|
|
|
|
declare alt$3$tab (*) byte data (
|
|
add$in, type$38,
|
|
qq$in, type$0,
|
|
adc$in, type$38,
|
|
sbb$in, type$38,
|
|
qq$in, type$0,
|
|
sub$in, type$38,
|
|
qq$in, type$0,
|
|
cmp$in, type$38);
|
|
|
|
declare alt$4$tab (*) byte data (
|
|
rol$in, type$29,
|
|
ror$in, type$29,
|
|
rcl$in, type$29,
|
|
rcr$in, type$29,
|
|
shl$in, type$29,
|
|
shr$in, type$29,
|
|
qq$in, type$0,
|
|
sar$in, type$29);
|
|
|
|
declare alt$5$tab (*) byte data (
|
|
rol$in, type$27,
|
|
ror$in, type$27,
|
|
rcl$in, type$27,
|
|
rcr$in, type$27,
|
|
shl$in, type$27,
|
|
shr$in, type$27,
|
|
qq$in, type$0,
|
|
sar$in, type$27);
|
|
|
|
declare alt$6$tab (*) byte data (
|
|
test$in, type$34,
|
|
qq$in, type$0,
|
|
not$in, type$45,
|
|
neg$in, type$45,
|
|
mul$in, type$45,
|
|
imul$in, type$45,
|
|
div$in, type$45,
|
|
idiv$in, type$45);
|
|
|
|
declare alt$7$tab (*) byte data (
|
|
inc$in, type$45,
|
|
dec$in, type$45,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0);
|
|
|
|
declare alt$8$tab (*) byte data (
|
|
inc$in, type$45,
|
|
dec$in, type$45,
|
|
call$in, type$9,
|
|
callf$in, type$7,
|
|
jmp$in, type$9,
|
|
jmpf$in, type$7,
|
|
push$in, type$7,
|
|
qq$in, type$0);
|
|
|
|
/*
|
|
instruction table for 8086 disassembler
|
|
instruction is index into table
|
|
there are 2 bytes per instruction:
|
|
1. index into ascii opcode table
|
|
2. instruction type (how many operands of what type, etc.)
|
|
*/
|
|
|
|
declare instr$table (512) byte public data (
|
|
add$in, type$14, /* 0 */
|
|
add$in, type$15,
|
|
add$in, type$16,
|
|
add$in, type$17,
|
|
add$in, type$23,
|
|
add$in, type$24,
|
|
push$in, type$4,
|
|
pop$in, type$4,
|
|
or$in, type$14,
|
|
or$in, type$15,
|
|
or$in, type$16,
|
|
or$in, type$17,
|
|
or$in, type$23,
|
|
or$in, type$24,
|
|
push$in, type$4,
|
|
qq$in, type$0,
|
|
adc$in, type$14, /* 10 */
|
|
adc$in, type$15,
|
|
adc$in, type$16,
|
|
adc$in, type$17,
|
|
adc$in, type$23,
|
|
adc$in, type$24,
|
|
push$in, type$4,
|
|
pop$in, type$4,
|
|
sbb$in, type$14,
|
|
sbb$in, type$15,
|
|
sbb$in, type$16,
|
|
sbb$in, type$17,
|
|
sbb$in, type$23,
|
|
sbb$in, type$24,
|
|
push$in, type$4,
|
|
pop$in, type$4,
|
|
and$in, type$14, /* 20 */
|
|
and$in, type$15,
|
|
and$in, type$16,
|
|
and$in, type$17,
|
|
and$in, type$23,
|
|
and$in, type$24,
|
|
es$in, prefix$type,
|
|
daa$in, type$1,
|
|
sub$in, type$14,
|
|
sub$in, type$15,
|
|
sub$in, type$16,
|
|
sub$in, type$17,
|
|
sub$in, type$23,
|
|
sub$in, type$24,
|
|
cs$in, prefix$type,
|
|
das$in, type$1,
|
|
xor$in, type$14, /* 30 */
|
|
xor$in, type$15,
|
|
xor$in, type$16,
|
|
xor$in, type$17,
|
|
xor$in, type$23,
|
|
xor$in, type$24,
|
|
ss$in, prefix$type,
|
|
aaa$in, type$1,
|
|
cmp$in, type$14,
|
|
cmp$in, type$15,
|
|
cmp$in, type$16,
|
|
cmp$in, type$17,
|
|
cmp$in, type$23,
|
|
cmp$in, type$24,
|
|
ds$in, prefix$type,
|
|
aas$in, type$1,
|
|
inc$in, type$3, /* 40 */
|
|
inc$in, type$3,
|
|
inc$in, type$3,
|
|
inc$in, type$3,
|
|
inc$in, type$3,
|
|
inc$in, type$3,
|
|
inc$in, type$3,
|
|
inc$in, type$3,
|
|
dec$in, type$3,
|
|
dec$in, type$3,
|
|
dec$in, type$3,
|
|
dec$in, type$3,
|
|
dec$in, type$3,
|
|
dec$in, type$3,
|
|
dec$in, type$3,
|
|
dec$in, type$3,
|
|
push$in, type$3, /* 50 */
|
|
push$in, type$3,
|
|
push$in, type$3,
|
|
push$in, type$3,
|
|
push$in, type$3,
|
|
push$in, type$3,
|
|
push$in, type$3,
|
|
push$in, type$3,
|
|
pop$in, type$3,
|
|
pop$in, type$3,
|
|
pop$in, type$3,
|
|
pop$in, type$3,
|
|
pop$in, type$3,
|
|
pop$in, type$3,
|
|
pop$in, type$3,
|
|
pop$in, type$3,
|
|
qq$in, type$0, /* 60 */
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
jo$in, type$5, /* 70 */
|
|
jno$in, type$5,
|
|
jb$in, type$5,
|
|
jnb$in, type$5,
|
|
jz$in, type$5,
|
|
jnz$in, type$5,
|
|
jbe$in, type$5,
|
|
ja$in, type$5,
|
|
js$in, type$5,
|
|
jns$in, type$5,
|
|
jp$in, type$5,
|
|
jnp$in, type$5,
|
|
jl$in, type$5,
|
|
jnl$in, type$5,
|
|
jle$in, type$5,
|
|
jg$in, type$5,
|
|
alt1, type$43, /* 80 */
|
|
alt1, type$43,
|
|
alt2, type$43,
|
|
alt2, type$43,
|
|
test$in, type$14,
|
|
test$in, type$15,
|
|
xchg$in, type$16,
|
|
xchg$in, type$17,
|
|
mov$in, type$14,
|
|
mov$in, type$15,
|
|
mov$in, type$16,
|
|
mov$in, type$17,
|
|
mov$in, type$36,
|
|
lea$in, type$39,
|
|
mov$in, type$37,
|
|
pop$in, type$9,
|
|
nop$in, type$1, /* 90 */
|
|
xchg$in, type$33,
|
|
xchg$in, type$33,
|
|
xchg$in, type$33,
|
|
xchg$in, type$33,
|
|
xchg$in, type$33,
|
|
xchg$in, type$33,
|
|
xchg$in, type$33,
|
|
cbw$in, type$1,
|
|
cwd$in, type$1,
|
|
callf$in, type$13,
|
|
wait$in, type$1,
|
|
pushf$in, type$1,
|
|
popf$in, type$1,
|
|
sahf$in, type$1,
|
|
lahf$in, type$1,
|
|
mov$in, type$18, /* A0 */
|
|
mov$in, type$19,
|
|
mov$in, type$20,
|
|
mov$in, type$21,
|
|
movsb$in, type$1,
|
|
movsw$in, type$1,
|
|
cmpsb$in, type$1,
|
|
cmpsw$in, type$1,
|
|
test$in, type$23,
|
|
test$in, type$24,
|
|
stosb$in, type$1,
|
|
stosw$in, type$1,
|
|
lodsb$in, type$1,
|
|
lodsw$in, type$1,
|
|
scasb$in, type$1,
|
|
scasw$in, type$1,
|
|
mov$in, type$31, /* B0 */
|
|
mov$in, type$31,
|
|
mov$in, type$31,
|
|
mov$in, type$31,
|
|
mov$in, type$31,
|
|
mov$in, type$31,
|
|
mov$in, type$31,
|
|
mov$in, type$31,
|
|
mov$in, type$32,
|
|
mov$in, type$32,
|
|
mov$in, type$32,
|
|
mov$in, type$32,
|
|
mov$in, type$32,
|
|
mov$in, type$32,
|
|
mov$in, type$32,
|
|
mov$in, type$32,
|
|
qq$in, type$0, /* C0 */
|
|
qq$in, type$0,
|
|
ret$in, type$11,
|
|
ret$in, type$1,
|
|
les$in, type$39,
|
|
lds$in, type$39,
|
|
mov$in, type$40,
|
|
mov$in, type$41,
|
|
qq$in, type$0,
|
|
qq$in, type$0,
|
|
retf$in, type$11,
|
|
retf$in, type$1,
|
|
int$in, type$12,
|
|
int$in, type$10,
|
|
into$in, type$1,
|
|
iret$in, type$1,
|
|
alt4, type$43, /* D0 */
|
|
alt4, type$43,
|
|
alt5, type$43,
|
|
alt5, type$43,
|
|
aam$in, type$2,
|
|
aad$in, type$2,
|
|
qq$in, type$0,
|
|
xlat$in, type$1,
|
|
esc$in, type$42,
|
|
esc$in, type$42,
|
|
esc$in, type$42,
|
|
esc$in, type$42,
|
|
esc$in, type$42,
|
|
esc$in, type$42,
|
|
esc$in, type$42,
|
|
esc$in, type$42,
|
|
loopne$in, type$5, /* E0 */
|
|
loope$in, type$5,
|
|
loop$in, type$5,
|
|
jcxz$in, type$5,
|
|
in$in, type$22,
|
|
in$in, type$22,
|
|
out$in, type$22,
|
|
out$in, type$22,
|
|
call$in, type$6,
|
|
jmp$in, type$6,
|
|
jmpf$in, type$13,
|
|
jmps$in, type$5,
|
|
in$in, type$25,
|
|
in$in, type$26,
|
|
out$in, type$25,
|
|
out$in, type$26,
|
|
lock$in, prefix$type, /* F0 */
|
|
qq$in, type$0,
|
|
repne$in, prefix$type,
|
|
rep$in, prefix$type,
|
|
hlt$in, type$1,
|
|
cmc$in, type$1,
|
|
alt6, type$43,
|
|
alt6, type$43,
|
|
clc$in, type$1,
|
|
stc$in, type$1,
|
|
cli$in, type$1,
|
|
sti$in, type$1,
|
|
cld$in, type$1,
|
|
std$in, type$1,
|
|
alt7, type$43,
|
|
alt8, type$43);
|
|
|
|
end instr86;
|