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
     Examples:  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 sup-
     port 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  out-
     put,  and  long  stretches  of  null data are represented by
     appropriate .zerow pseudo-ops. Disassembly of the  bss  seg-
     ment,  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 some-
     what  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  arbi-
     trary)  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  con-
     stants.

     Error Messages

     Various error messages may be generated as a result of prob-
     lems  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 formatBad 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.