Pete's Collection of Curios

DASMx Version 1.40


DASMx is a disassembler for a range of common microprocessors. 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 (i.e. 8048 et al);
  • Intel MCS-51TM family (i.e. 8051 et al);
  • Microchip PIC16CXX family;
  • RCA CDP1802 COSMAC and variants;
  • Signetics 2650.

The disassembler takes as input a binary code/data image file (typically a ROM image) and generates either an assembler source file or a listing file. DASMx is a multi-pass disassembler with automatic symbol generation. DASMx can optionally use a symbol file containing user-defined symbols and specifications of data areas within the source image.

DASMx includes a powerful feature called code threading. Using known code entry points (e.g. reset and interrupt vectors) and by performing partial emulation of the processor, the disassembler is able to follow known code paths within a source binary image.

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 (which tend to confuse most disassemblers).

The key features of DASMx are:

  • Disassembly of object code images for the following microprocessors:
    • Motorola 6800, 6802 and 6808;
    • Motorola 6801 and 6803;
    • Hitachi 6301 and 6303;
    • Motorola 6805;
    • Motorola 68HC05;
    • Hitachi 6305;
    • Hitachi 63L05;
    • Motorola 6809;
    • MOS Technology/Rockwell 6502;
    • Rockwell 65C00/21 and 65C29;
    • Rockwell 65C02, 65C102 and 65C112;
    • Intel 8048;
    • Intel 8051;
    • Intel 8080 and 8085;
    • Microchip PIC16F83 and PIC16F84;
    • RCA CDP1802 COSMAC;
    • RCA CDP1805 and CDP1806;
    • Sharp LR35902 (i.e. GameBoy processor);
    • Signetics 2650;
    • Zilog Z80 and National Semiconductor NSC800.
  • Multi-pass operation, with automatic symbol generation for jump, call and data target addresses;
  • Code threading (used to automatically differentiate code from data);
  • Control file containing user defined symbols, specifications of data areas and code entry points;
  • Generation of full listing or assembler output file;
  • Runs from the Windows command line.