Logo jkrieger.de section logo
invisible corner_top_left.gif
divider design elem. Home design elem.   design elem. Software design elem.   design elem. Links design elem.   design elem. Science design elem.   design elem. Photographie design elem.   design elem. everythingelse design elem.   design elem. eMail design elem.
divider_end corner_top_right
Verlauf

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.
 printable version Impressum
corner_top_right2
verlauf_right.gif
corner_bottom_left.gif corner_bottom_left2 Copyright (c) J. Krieger corner_bottom_right.gif
invisible
last updated: 18.06.2008
file: http://www.jkrieger.de/software/tools/regsim.html
invisible