learning assembly language
This is the assembly language emulator.
The emulator is written in PHP. This is not a great choice, but it is what I have available for free.
I am starting work with a universal hardware emulator that is oipen source and free for personal and educational uses. This is of obvious use to colleges and universities.
I am starting work with a generic dual core processor (so that students immediately can work in a modern concurrent programming environment).
I will extend this to include the ability to emulate a wide range of processors, and eventually add the ability to have table-driven descriptions of processors, allowing professors and students to add any processor on their own, including imaginary processors they design.
I also intend to extend the emulator to the microcode level and then to the gate level.
Download the PHP files to your computer. Copies are stored as .txt files (because .php files would be interpretted and you wouldnt see the actual code). See the list of files below.
Change the .txt file endings to .php.
Individuals with their own web server hosting should upload the .php files to their
This emulator is intended for the LAMP model: Linux, Apache, MySQL, and PHP/Perl/Python.
Individuals using Mac OS X, Linux, or any other UNIX-like or UNIX-compatible operating system should downlaod copies of Apache and PHP (both are free open source) and run them through a web browser conencting to local host.
Schools, colleges, and universities should modify the files to meet institutional needs (including customization for use on school servers) and then upload them to the institutional server and make the emulator available for student use.
Both schools (for educational and research purposes) and individuals (for personal purposes) are encouraged to modify and expand their copies of this project. Share print-outs at: Milo, PO Box 5237, Balboa Island, California, USA, 92662.
You will notice that I am implementing the 8080/8085/Z80 processor and instruction set first. This is a very simple early 8-bit processor and therefore easier to finish. But the principles apply to all other more complex processors and instruction sets, so this is a great proof of concept.
There is also a manual describing the processor emulator. It is organized in a manner similar to that used for real processors. This serves as both a complete reference and as a teaching example to show how to read and use a real programmer reference manual. See the list of chapters below.