dis88(9)


Command:   dis88 - disassembler [IBM]
Syntax:    dis88 [-o] infile [outfile]
Flags:     -o  List the object code along with the assembly code
Examples:  dis88 a.out >listing     # Disassemble a.out
           dis88 -o a.out listing   # Ditto, but with object code

     Dis88 disassembles 8088 object code to the assembly language format
used  by MINIX.  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.

     The program is invoked by:

        dis88 [-o] infile [outfile]

The -o flag causes object code to be listed. If  no  outfile  is  given,
stdout is used.

     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.

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

     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.

Error Messages

     Various error messages may be generated as  a  result  of  problems
encountered during the disassembly.  They are listed below

   Cannot access input file         - Input file  cannot  be  opened  or
                                      read
   Cannot open output file          - Output file cannot be created
   Input file not in object format  - Bad magic number
   Not an 8086/8088 object file     - CPU  ID  of  the  file  header  is
                                      incorrect
   Reloc table overflow             - Relocation  table   exceeds   1500
                                      entries
   Symbol table overflow            - Symbol table exceeds 1500 entries
   Lseek error                      - Input file corrupted (should never
                                      happen)
   Warning: no symbols              - Symbol table is missing (use ast)
   Cannot reopen input file         - Input  file  was  removed   during
                                      execution

Author

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