[9] | 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.
|
---|