1 | .so mnx.mac
|
---|
2 | .TH DIS88 9
|
---|
3 | .CD "dis88 \(en disassembler [IBM]"
|
---|
4 | .SX "dis88\fR [\fB\(eno\fR] \fIinfile\fR [\fIoutfile\fR]"
|
---|
5 | .FL "\(eno" "List the object code along with the assembly code"
|
---|
6 | .EX "dis88 a.out >listing" "Disassemble \fIa.out\fR"
|
---|
7 | .EX "dis88 \(eno a.out listing" "Ditto, but with object code"
|
---|
8 | .PP
|
---|
9 | \fIDis88\fR disassembles 8088 object code to the assembly language format
|
---|
10 | used by
|
---|
11 | .MX .
|
---|
12 | It makes full use of
|
---|
13 | symbol table information, supports separate
|
---|
14 | instruction and data space, and generates synthetic labels when needed.
|
---|
15 | It does not support 8087 mnemonics, symbolic data segment references, or
|
---|
16 | the ESC mnemonic.
|
---|
17 | .PP
|
---|
18 | The program is invoked by:
|
---|
19 | .HS
|
---|
20 | .Cx "dis88 [\(eno] infile [outfile]"
|
---|
21 | .HS
|
---|
22 | The \(eno flag causes object code to be listed.
|
---|
23 | If no outfile is given, \fIstdout\fR is used.
|
---|
24 | .PP
|
---|
25 | The text segment of an object file is always padded to an even address.
|
---|
26 | In addition, if the file has split I/D space, the text segment will be padded
|
---|
27 | to a paragraph boundary (i.e., an address divisible by 16). Due to padding, the
|
---|
28 | disassembler may produce a few spurious, but harmless, instructions at the end
|
---|
29 | of the text segment.
|
---|
30 | .PP
|
---|
31 | Because the information to which initialized data refers cannot generally
|
---|
32 | be inferred from context, the data segment is treated literally. Byte values
|
---|
33 | (in hexadecimal) are output, and long stretches of null data are represented by
|
---|
34 | appropriate \fI.zerow\fR pseudo-ops.
|
---|
35 | Disassembly of the bss segment, on the other
|
---|
36 | hand, is quite straightforward, because uninitialized data is all zero by
|
---|
37 | definition.
|
---|
38 | No data is output in the bss segment, but symbolic labels are output
|
---|
39 | as appropriate.
|
---|
40 | .PP
|
---|
41 | The output of operands in symbolic form is complicated somewhat by the
|
---|
42 | existence of assembler symbolic constants and segment override opcodes. Thus,
|
---|
43 | the program's symbol lookup routine attempts to apply a certain amount of
|
---|
44 | intelligence when it is asked to find a symbol. If it cannot match on a symbol
|
---|
45 | of the preferred type, it may output a symbol of some other type, depending on
|
---|
46 | preassigned (and somewhat arbitrary) rankings within each type. Finally, if
|
---|
47 | all else fails, it will output a string containing the address sought as a hex
|
---|
48 | constant. For user convenience, the targets of branches are also output, in
|
---|
49 | comments, as hexadecimal constants.
|
---|
50 | .SS "Error Messages"
|
---|
51 | .PP
|
---|
52 | Various error messages may be generated as a result of problems encountered
|
---|
53 | during the disassembly.
|
---|
54 | They are listed below
|
---|
55 | .HS.
|
---|
56 | .in +3.20i
|
---|
57 | .ta +2.75i +0.2i
|
---|
58 | .ti -2.95i
|
---|
59 | Cannot access input file \(en Input file cannot be opened or read
|
---|
60 | .ti -2.95i
|
---|
61 | Cannot open output file \(en Output file cannot be created
|
---|
62 | .ti -2.95i
|
---|
63 | Input file not in object format \(en Bad magic number
|
---|
64 | .ti -2.95i
|
---|
65 | Not an 8086/8088 object file \(en CPU ID of the file header is incorrect
|
---|
66 | .ti -2.95i
|
---|
67 | Reloc table overflow \(en Relocation table exceeds 1500 entries
|
---|
68 | .ti -2.95i
|
---|
69 | Symbol table overflow \(en Symbol table exceeds 1500 entries
|
---|
70 | .ti -2.95i
|
---|
71 | Lseek error \(en Input file corrupted (should never happen)
|
---|
72 | .ti -2.95i
|
---|
73 | Warning: no symbols \(en Symbol table is missing (use ast)
|
---|
74 | .ti -2.95i
|
---|
75 | Cannot reopen input file \(en Input file was removed during execution
|
---|
76 | .in -3.20i
|
---|
77 | .SS "Author"
|
---|
78 | .PP
|
---|
79 | \fIDis88\fR was written and
|
---|
80 | copyrighted by G. M. Harding and is included here by permission. It may be
|
---|
81 | freely redistributed provided that complete source code, with all copyright
|
---|
82 | notices, accompanies any redistribution. This provision also applies to any
|
---|
83 | modifications you may make. You are urged to comment such changes, giving,
|
---|
84 | as a minimum, your name and complete address.
|
---|