1 dis88 2 Beta Release 3 87/09/01 4 --- 5 G. M. HARDING 6 POB 4142 7 Santa Clara CA 95054-0142 8 9 10 "Dis88" is a symbolic disassembler for the Intel 8088 CPU, 11 designed to run under the PC/IX operating system on an IBM XT 12 or fully-compatible clone. Its output is in the format of, and 13 is completely compatible with, the PC/IX assembler, "as". The 14 program is copyrighted by its author, but may be copied and re- 15 distributed freely provided that complete source code, with all 16 copyright notices, accompanies any distribution. This provision 17 also applies to any modifications you may make. You are urged 18 to comment such changes, giving, as a miminum, your name and 19 complete address. 20 21 This release of the program is a beta release, which means 22 that it has been extensively, but not exhaustively, tested. 23 User comments, recommendations, and bug fixes are welcome. The 24 principal features of the current release are: 25 26 (a) The ability to disassemble any file in PC/IX object 27 format, making full use of symbol and relocation information if 28 it is present, regardless of whether the file is executable or 29 linkable, and regardless of whether it has continuous or split 30 I/D space; 31 32 (b) Automatic generation of synthetic labels when no sym- 33 bol table is available; and 34 35 (c) Optional output of address and object-code informa- 36 tion as assembler comment text. 37 38 Limitations of the current release are: 39 40 (a) Numeric co-processor (i.e., 8087) mnemonics are not 41 supported. Instructions for the co-processor are disassembled 42 as CPU escape sequences, or as interrupts, depending on how 43 they were assembled in the first place. This limitation will be 44 addressed in a future release. 45 46 (b) Symbolic references within the object file's data 47 segment are not supported. Thus, for example, if a data segment 48 location is initialized to point to a text segment address, no 49 reference to a text segment symbol will be detected. This limi- 50 tation is likely to remain in future releases, because object 51 code does not, in most cases, contain sufficient information to 52 allow meaningful interpretation of pure data. (Note, however, 53 that symbolic references to the data segment from within the 54 text segment are always supported.) 55 56 As a final caveat, be aware that the PC/IX assembler does 57 not recognize the "esc" mnemonic, even though it refers to a 58 completely valid CPU operation which is documented in all the 59 Intel literature. Thus, the corresponding opcodes (0xd8 through 60 0xdf) are disassembled as .byte directives. For reference, how- 61 ever, the syntactically-correct "esc" instruction is output as 62 a comment. 63 64 To build the disassembler program, transfer all the source 65 files, together with the Makefile, to a suitable (preferably 66 empty) PC/IX directory. Then, simply type "make". 67 68 To use dis88, place it in a directory which appears in 69 your $PATH list. It may then be invoked by name from whatever 70 directory you happen to be in. As a minimum, the program must 71 be invoked with one command-line argument: the name of the ob- 72 ject file to be disassembled. (Dis88 will complain if the file 73 specified is not an object file.) Optionally, you may specify 74 an output file; stdout is the default. One command-line switch 75 is available: "-o", which makes the program display addresses 76 and object code along with its mnemonic disassembly. 77 78 The "-o" option is useful primarily for verifying the cor- 79 rectness of the program's output. In particular, it may be used 80 to check the accuracy of local relative jump opcodes. These 81 jumps often target local labels, which are lost at assembly 82 time; thus, the disassembly may contain cryptic instructions 83 like "jnz .+39". As a user convenience, all relative jump and 84 call opcodes are output with a comment which identifies the 85 physical target address. 86 87 By convention, the release level of the program as a whole 88 is the SID of the file disrel.c, and this SID string appears in 89 each disassembly. Release 2.1 of the program is the first beta 90 release to be distributed on Usenet. 91