85 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.so mnx.mac
 | 
						|
.TH DIS88 9
 | 
						|
.CD "dis88 \(en disassembler [IBM]"
 | 
						|
.SX "dis88\fR [\fB\(eno\fR] \fIinfile\fR [\fIoutfile\fR]"
 | 
						|
.FL "\(eno" "List the object code along with the assembly code"
 | 
						|
.EX "dis88 a.out >listing" "Disassemble \fIa.out\fR"
 | 
						|
.EX "dis88 \(eno a.out listing" "Ditto, but with object code"
 | 
						|
.PP
 | 
						|
\fIDis88\fR disassembles 8088 object code to the assembly language format
 | 
						|
used by 
 | 
						|
.MX  .
 | 
						|
It makes full use of
 | 
						|
symbol table information, supports separate 
 | 
						|
instruction and data space, and generates synthetic labels when needed. 
 | 
						|
It does not support 8087 mnemonics, symbolic data segment references, or 
 | 
						|
the ESC mnemonic.
 | 
						|
.PP
 | 
						|
The program is invoked by:
 | 
						|
.HS
 | 
						|
.Cx "dis88 [\(eno] infile [outfile]"
 | 
						|
.HS
 | 
						|
The \(eno flag causes object code to be listed. 
 | 
						|
If no outfile is given, \fIstdout\fR is used.
 | 
						|
.PP
 | 
						|
The text segment of an object file is always padded to an even address.
 | 
						|
In addition, if the file has split I/D space, the text segment will be padded
 | 
						|
to a paragraph boundary (i.e., an address divisible by 16). Due to padding, the
 | 
						|
disassembler may produce a few spurious, but harmless, instructions at the end
 | 
						|
of the text segment.
 | 
						|
.PP
 | 
						|
Because the information to which initialized data refers cannot generally
 | 
						|
be inferred from context, the data segment is treated literally. Byte values
 | 
						|
(in hexadecimal) are output, and long stretches of null data are represented by
 | 
						|
appropriate \fI.zerow\fR pseudo-ops. 
 | 
						|
Disassembly of the bss segment, on the other
 | 
						|
hand, is quite straightforward, because uninitialized data is all zero by 
 | 
						|
definition. 
 | 
						|
No data is output in the bss segment, but symbolic labels are output
 | 
						|
as appropriate.
 | 
						|
.PP
 | 
						|
The output of operands in symbolic form is complicated somewhat by the
 | 
						|
existence of assembler symbolic constants and segment override opcodes. Thus,
 | 
						|
the program's symbol lookup routine attempts to apply a certain amount of
 | 
						|
intelligence when it is asked to find a symbol. If it cannot match on a symbol
 | 
						|
of the preferred type, it may output a symbol of some other type, depending on
 | 
						|
preassigned (and somewhat arbitrary) rankings within each type. Finally, if
 | 
						|
all else fails, it will output a string containing the address sought as a hex
 | 
						|
constant. For user convenience, the targets of branches are also output, in
 | 
						|
comments, as hexadecimal constants.
 | 
						|
.SS "Error Messages"
 | 
						|
.PP
 | 
						|
Various error messages may be generated as a result of problems encountered
 | 
						|
during the disassembly.
 | 
						|
They are listed below
 | 
						|
.HS.
 | 
						|
.in +3.20i
 | 
						|
.ta +2.75i +0.2i
 | 
						|
.ti -2.95i
 | 
						|
Cannot access input file	\(en	Input file cannot be opened or read
 | 
						|
.ti -2.95i
 | 
						|
Cannot open output file	\(en	Output file cannot be created
 | 
						|
.ti -2.95i
 | 
						|
Input file not in object format	\(en	Bad magic number
 | 
						|
.ti -2.95i
 | 
						|
Not an 8086/8088 object file	\(en	CPU ID of the file header is incorrect
 | 
						|
.ti -2.95i
 | 
						|
Reloc table overflow	\(en	Relocation table exceeds 1500 entries
 | 
						|
.ti -2.95i
 | 
						|
Symbol table overflow	\(en	Symbol table exceeds 1500 entries
 | 
						|
.ti -2.95i
 | 
						|
Lseek error	\(en	Input file corrupted (should never happen)
 | 
						|
.ti -2.95i
 | 
						|
Warning: no symbols	\(en	Symbol table is missing (use ast)
 | 
						|
.ti -2.95i
 | 
						|
Cannot reopen input file	\(en	Input file was removed during execution
 | 
						|
.in -3.20i
 | 
						|
.SS "Author"
 | 
						|
.PP
 | 
						|
\fIDis88\fR  was written and
 | 
						|
copyrighted by G. M. Harding and is included here by permission. It may be
 | 
						|
freely redistributed provided that complete source code, with all copyright
 | 
						|
notices, accompanies any redistribution. This provision also applies to any
 | 
						|
modifications you may make. You are urged to comment such changes, giving,
 | 
						|
as a minimum, your name and complete address.
 |