Universal Disassembler program for 8-bit microprocessors
Go to file
2024-06-28 17:00:49 -04:00
65c02.py Start 6809. 2015-07-02 22:04:51 -04:00
1802.py Implement rest of 1802 CPU. 2020-06-11 18:54:50 -04:00
6502.py Added 6502 undocumented opcodes 2016-02-21 22:13:14 -08:00
6800.py Make some fixes for 6800. 2018-09-09 13:04:13 -04:00
6801.py Added 6801 / 6803 support 2023-06-13 22:47:53 +01:00
6809.py Fixed instruction length for 6809 ldy direct and indexed 2018-09-11 05:13:08 -07:00
6811.py Start 6809. 2015-07-02 22:04:51 -04:00
8051.py Fixed for Z80. 2018-09-09 18:07:30 -04:00
8080.py Start 6809. 2015-07-02 22:04:51 -04:00
8085.py Add 8085 support. Update README. Fix some PyLint warnings. 2020-06-09 18:12:27 -04:00
65816.py 65816: text formatting: aligned right brackets in opcodeTable 2016-03-04 11:44:47 -08:00
LICENSE Initial commit 2015-06-18 17:18:36 -04:00
README.md Add support for specifying address option in hex or octal. 2024-06-28 17:00:49 -04:00
udis.py Add support for specifying address option in hex or octal. 2024-06-28 17:00:49 -04:00
z80.py Bug fix. 2021-10-01 17:57:08 -04:00

Universal Disassembler program for 8-bit microprocessors

This is a simple disassembler for various 8-bit microprocessors. It reads a binary file specified on the command line and produces a disassembly. It requires Python 3. It has been tested on Linux but should work on any platform that supports Python. See the source code for more details.

The following CPUs are either supported or planned to be supported:

CPU Status


6502 done

65816 done

65C02 done

6800 done

6801/6803 done

6809 done (incomplete)

6811 done

8080 done

8085 done

8051 done (incomplete)

Z80 done

F8 possible

1802 done

TMS9900 possible

usage: udis.py [-h] [-c CPU] [-n] [-a ADDRESS] [-i] filename

positional arguments:

filename Binary file to disassemble

optional arguments:

-h, --help show this help message and exit

-c CPU, --cpu CPU Specify CPU type (defaults to 6502)

-n, --nolist Don't list instruction bytes (make output suitable for assembler)

-a ADDRESS, --address ADDRESS Specify starting address (defaults to 0)

-i, --invalid Show invalid opcodes as ??? rather than constants