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.
 | 
