I recommend taking a look at using Python to write a disassembler. It has characteristics and capabilities that can be very handy when writing a disassembler.
- bit-manipulation: logical operators perform operations on all bits of integer value
- functional programming: using map upon results of bitmask operations can be handy
- powerful file-reading operations: file I/O is so easy to do in Python
- nice capabilities for reading structured binary files (like .EXE files)
Python has other qualities that make it very useful for a program of any size. An x86 assembler that supports the current microprocessors instruction set as opposed to the original 8086 instruction set is going to be a large program.
Having a language that makes it easy to do bit-masking is very useful when writing an assembler.
- object-oriented: makes code-reuse easier and programs more understandable, less redundant
- modular: modules and even packages can be used to keep program chunks to manageable size
- concise and readable: so not much typing or head-scratching
- interactive: makes it easier to develop/test incrementally
- built-in symbolic debugger: handy when automated tests do not cut it
- modern QA support: unittest similar to JUnit, doctest supports functional tests by example
- built-in help: so you do not have to go flipping a book or launching a browser
- terrific documentation: reference and tutorial material in PDF and HTML file formats
- good IDE support: Eclipse, NetBeans, Emacs, etc. all give excellent support for Python
- good support for serving web pages: includes support for HTML/HTTP and great 3rd party web frameworks out there too
- great documentation generation: use doc string convention to document modules, classes, and methods and a utility that comes with Python will dynamically generate hyperlinked HTML documentation and serve it up for you to browse from a TCP/IP port
Python gives you the opportunity to have fun with your program as you develop it. There is a pretty big community of Python programmers out there. They are not legion like Java programmers are and C++ programmers used to be but there are tons around.
Python is a popular programming language at Google, Yahoo, and other modern web companies due to its power and flexibility. The Jython python-in-java interpreter grants even more power to both languages as there is a high degree of synergy and decent level of compatibility between them. There is a Jython podcast you can listen to if you do not like to read.
Python was invented at the beginning of the 1990 s, making it even older than Java. Having existed this long, with a strong, steady following, it has evolved into a very sturdy, capable language with many examples and a decent community of programmers who use it for work and pleasure.
If you get stuck, the Python community is usually very helpful with ideas for how you can take a stab at a problem you are having using one or two handy Python features.