Date: Thu, 21 Jan 93 20:37:13 PST From: "Jerzy Tarasiuk" Message-Id: <1225.JT@zfja-gate.fuw.edu.pl> To: Keith Petersen Subject: Disassemblers on SIMTEL20 I tried to use several disassemblers (most of them taken from SIMTEL20 directory PD1:) to produce .ASM file from ROM image and compared them to check what is most useful. Here is my notebook (I send it hoping the info can be useful for someone who want to get disaasembler for 8088 and need some help to select it; can you put it in to make it accessible for all ?): SOURCER (made by V COMMUNICATIONS) Commercial product. Some people assume it is good disassembler. However, the program is sophist. If ancient Greece sophists proved black is white or white is black. This program even if told where is code and where is data will interpret machine code as data (words, bytes or strings), and will disassembly what is data (e.g. strings). Don't use it: although program looks beatifully and produces a lot of information, most of it is unusable because of program sophism! ID12 (Intelligent Disassembler 1.2; source, GNU copyleft) Seems to be most dumby disassembler I saw. And it has some serious bugs: some instructions are incorrectly interpreted, seems it doesn't know what are lengths of some instructions like CMP (it incorrectly disassembled CMP and next found a conditional jump taking next opcode as displacement or so, result was jump pointing to data and disassem- bling the data) and seems it doesn't recognize 186/286 opcodes. It attempts to find locations which can be reach and unassemble code found there (can specify "entry" and "exit" locations). Data (all what wasn't interpreted as code) is shown as strings (if consist of printable characters) or decimal bytes (making enjoing game to quess what address can be formed from them, e.g. DB 'x',35). Also creates symbols for some values used in program (seems when the value is used as address) but doesn't define them in program. Of course doesn't show addresses of code or data: game would be to easy. BUBBLE (Bubble Chamber, Beta Release, RH Factor Sooftware) Interactive. Don't use for .EXE files: attempts to unassemble header as machine code. When I tried it, it assumed several bytes on begin are code, all remaining is data. I edited map for it (press F6) and showed where is next code. It interpreted all remaining as code. Needed to find next data (shown as machine instructions only: new enjoying game to guess what character string is shown as these machine instructions). On output: constants are shown as hex, without leading 0 (e.g. AA55h, not 0AA55h which MASM can recognize). I supposed it uses hex notation, but DUP-s are decimal ( DB 77 DUP (00h) ). And, as ID12, it loses labels (BTW, it makes labels for code only). ASMGEN: would be nice if weren't creating a lot of labels which are never used (L0001 EQU $-2 L0002 EQU $-1 L0003 EQU $ PUSH AX ...). DIS86 (Interactive Disassembler 2.12, by Dr. James R. Van Zandt) Shareware ($25 appreciated, $125 for network installation, for $50 can get new version). Seems attempt to unassemble anything using it requires a lot of manual work and some work can be done with same efficiency using DEBUG (or some better debugger; DIS86 has commands slightly better than debug) in conjunction with screen-to-file save TSR: I was unable to find any advantage of DIS86 over the combination. Surely using DEBUG to dump all hex, then look for what is obviously data, unassemble all remaining and use good editor requires less work. Don't waste your time to try this product, there are better ones. RES86 (RESOURCE by Ward Christensen, Larry Etienne, Craig Derouen) Old, .ASM source + 16kB .COM file. No documentation. Interactive (however looks worse than BUBBLE). Use DEBUG instead! MD86 (Masterful Disassembler - i8086 version 1.00) ShareWare (registration $17.50 to get user's manual and diskette). With a lot of trouble I was able to get it working, but it seems to be completely unusable due to large number of bugs! A game of quessing: what next unexpected behavior it will show due to bug? Of course, all work done during hour session can be destroyed by one keystroke which, based on documentation, should be correct. DMPPRG20 (DUMPPROG version 2.01, (c) D.J. Murdoch, 1991, 1992, (c) 1992 Jeroen Pluimers, based on PD code by William Peavy) Take up to 80486 opcodes! Reads .EXE and .MAP. I was unable to force it to read correctly data taken from ROM, even creating .MAP for it. Suppose it can work fine for .EXE created by Turbo Pascal or C. Can be installed into Borland Pascal IDE (I don't have the animal). Best: 1. ASMGEN 2. BUBBLE (have bugs but I used it (once only!)) I didn't try DEB2ASM.PQS: can anyone tell if it is useful ? Jerzy Tarasiuk, Computer Centre of Physics Department, University of Warsaw, Warsaw, Poland.