mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 01:14:21 +00:00
427 lines
8.4 KiB
Plaintext
427 lines
8.4 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;
|
||
|