A Simulator to assemble and run programs written in the AQA specified Assembly Language
Created by Peter Higginson
last edited Jan 05 2018 by Peter Higginson
This is my second attempt at producing something that might be useful in teaching how a computer works at the assembly language level using more modern instructions than the LMC. My first attempt produced a full RISC machine but was generally too complex for secondary school use.
This simulator is based on “exactly” the AQA Assembly Language Instructions with very few extensions. It assembles the instructions into 32 bit ARM code and then executes them from a simulated memory.
It is now finished, with moving blobs to show the transfers between the registers and memory. It has only the AQA instructions but I have extended the modes so that as well as absolute and direct, there is register offset and indirect.
Within the AQA specification there is no real way to do indirection. You are not given the instruction format so you cannot build instructions (as in the LMC for example). They express a bias against knowing real memory addresses and so the only consistent indirect access supported by the ARM processors is [Rn+<label>].
In the simulator you can see the memory addresses, so [Rn] works and is useful. There is an issue as to whether to support byte addressing or word addressing and the simulator defaults to word addressing but has an option to do byte addressing.
You can find it at peterhigginson.co.uk/AQA/