mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,427 @@
|
||||
$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;
|
||||
|
||||
Reference in New Issue
Block a user