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