DASMx is a multi-pass disassembler with automatic symbol generation. It takes as input a binary code or data image file typically a ROM image, and generates either an assembler source file or a listing file. DASMx can optionally use a symbol file containing user-defined symbols and specifications of data areas within the source image.
By using known code entry points and performing partial emulation of the processor, the disassembler is able to follow known code paths within a source binary image. The use of code threading, together with the multi-pass operation and symbol table management permits readable assembly code output from source images that contain large amounts of data.
The following main processor families are supported: Motorola 6800 family and single chip variants (including Hitachi 630X devices); Motorola 6809; MOS Technology 6502 and Rockwell 65C0X; Zilog Z80; Sharp LR35902 (single chip Z80 variant as used in the Nintendo GameBoy); Intel MCS-80/85TM family (i.e. 8080 and 8085); Intel MCS-48TM family (such as 8048); Intel MCS-51TM family (such as 8051); and Signetics 2650.