Simulator für 1-Adress-Maschine
(c) 2004 by Jan Krieger und Martin Horbanski,
FREEWARE
Dieses Programm simuliert eine einfache Rechnerarchitektur. Der Rechner
enthält einen Speicher mit den Adressen 0x000-0xFFF, in denen je
ein 16-bit-Wort gespeichert werden kann. Programm und Daten stehen im
selben Speicherbereich. Alle unbenutzten Speicherzellen werden mit
0x0000 initialisiert. Die Ausführung beginnt an der Adresse 0.
Folgende Assembler-Befehle stehen zur Verfügung:
OP-Code |
Operation |
|
Beschreibung |
0 |
STO |
«Adresse» |
speichere den ACCU
ins RAM an die Adresse
Mem[«Adresse»] = ACCU
|
1 |
LDA |
«Adresse» |
lade ACCU mit dem
Inhalt der Adresse
ACCU = Mem[«Adresse»] |
2 |
BRZ |
«Adresse» |
springe nach
Adresse, wenn ACCU Null ist
|
3 |
ADD |
«Adresse» |
addiere den Inhalt
der Adresse zum ACCU
ACCU = ACCU + Mem[«Adresse»]
|
4 |
SUB |
«Adresse» |
subtrahiere den
Inhalt der Adresse vom ACCU
ACCU = ACCU - Mem[«Adresse»]
|
5 |
OR |
«Adresse» |
logisches ODER des
ACCUS mit dem Inhalt der Adresse
ACCU = ACCU or Mem[«Adresse»]
|
6 |
AND |
«Adresse» |
logisches UND ders
ACCUS mit dem Inhalt der Adresse
ACCU = ACCU and Mem[«Adresse»]
|
7 |
XOR |
«Adresse» |
logisches XOR des
ACCUS mit dem Inhalt der Adresse
ACCU = ACCU xor Mem[«Adresse»]
|
8 |
NOT |
|
logisches NICHT der
Bits im ACCU
ACCU = not ACCU
|
9 |
INC |
|
inkrementiere den
ACCU
ACCU = ACCU +1 |
10 |
DEC |
|
dekrementiere den
ACCU
ACCU = ACCU -1 |
11 |
ZRO |
|
setze den ACCU auf
NULL
ACCU = 0
|
12 |
NOP |
|
no operation
|
13 |
NOP |
|
no operation |
14 |
NOP |
|
no operation |
15 |
NOP |
|
no operation |
Jeder Befehl wird in einem 16-Bit Wort gespeichert. Die
höchstwertigen 4 Bits sind der Opcode. Evtl. vorhandene Daten
werden in den unteren 12 Bits gespeichert. Damit ist der Adressraum auf
0x000 - 0xFFF festgelegt.
Im Programm kann links der Quelltext eingegeben werden. Nach eine Klick
auf "Laden" wird er assembliert und in den Speicher übernommen.
Rechts sieht man den Speicher. Er kann in zwei Abschnitte aufgeteilt
werden (0x000 - <Wert> und <Wert> - 0xFFF). Dabei wird im
linken Speicherbereich zusätzlich zu Adresse und Inhalt der
Speicherzelle noch der korrespondieren Befehl angezeigt. Im rechten
Speicherbereich wird neben der Hex-Darstellung noch eine
Dezimaldarstellung gegeben.
Kommentare werden mit ";" oder "#" eingeleitet und erstrecken sich bis
zum Ende der Zeile. Sie können sich auch an einen Assembler-Befehl
anschließen.
ADD 0x543 # Kommentar bis
Ende der Zeile
ZRO
# setzt ACCU = 0
# nur
Kommentar, eine ganze Zeile lang
Die Adresse kann in hexadezimaler Schreibweise angegeben werden, wie es
das Beispiel zeigt (vorangestelltes "0x"). Auch eine Angabe in
dezimaler Schreibweise ist möglich:
ADD 0x543 # Kommentar bis
Ende der Zeile
ADD 245 ;
Kommentar
Mit "Step" kann man schrittweise durch das Programm gehen. Mit "Start"
läuft das Programm automatisch ab. Dabei wird alle x Millisekunden
ein Befehl ausgeführt. x kann im Editierfeld "Intervall"
eingestellt werden. Mit "Stop" kann die Ausführung unterbrochen
werden. Ein unterbrochenes Programm kann mit "Step" auch schrittweise
ausgeführt werden. Mit einem weiteren Klick auf "Start" wird die
Ausführung fortgesetzt.
Download & Installation
Das Programm kann als ZIP-Datei heruntergeladen
werden:
Das Archiv enthält das Programm in ausführbarer Version
für Windows und das zugehörige Delphi 5-Projekt. Zum Betrieb
ist nur die EXE-Datei nötig.