Organisation des Speichers
Codierung der Befehle
Im Speicher können nur durch Murmeln dargestellte Zahlen abgelegt werden.
Befehle können also nicht direkt als Zeichenketten wie z.B. INC 4
gespeichert werden.
Es bietet sich an, die Befehle mit Hilfe von Zahlen zu codieren.
Die Entscheidung für eine Codierung ist willkürlich. Wir legen fest:
Darstellung der Parameter
Aber wie soll mit den Parametern verfahren werden?
Der Befehl INC
benötigt als Parameter noch die Angabe,
welche Speicherzelle erhöht werden soll, z.B. INC 4
.
Würde man zu der Murmel für INC
nun einfach die vier Murmeln
für die zu erhöhende Speicherzelle geben, so wären insgesamt fünf Murmeln im Gefäß -
und nicht mehr zu unterscheiden vom Befehl HLT
.
Verwendet man verschiedenfarbige Murmeln, kann man Befehle und Parameter unterscheiden. Auch die Festlegung der Farbe ist willkürlich, hier wählen wir rote Murmeln für Parameter und grüne Kugeln für Befehle.
Programm und Daten gemeinsam in einem Speicher
Es gibt viele Möglichkeiten, wie Programm und Daten im Speicher angeordnet werden können.
Die Festlegung erfolgt wieder einmal willkürlich: Damit der Programmlauf immer in einem festen
Speichergefäß beginnt, soll das Programm an den Anfang des Speichers
gelegt werden, d.h. die erste
Programmzeile liegt im ersten Speichergefäß. Die folgenden Speichergefäße stehen dann für Daten zur Verfügung.
Beachte, dass die Parameter der Befehle sich auf Daten-Speichergefäße beziehen. Bei einem gegebenen Programm müssen eventuell die Adressen abgeändert werden.
Betrachte als Beispiel das Programm
0 tst 1 1 jmp 3 2 jmp 6 3 dec 1 4 inc 0 5 jmp 0 6 hlt
und die folgende Speicherbelegung:
0: 3 1: 2
Wenn das Programm in codierter Form im Speicher abgelegt werden soll, müssen Daten in andere Speichergefäße abgelegt und infolgedessen Adressen verschoben werden:
0: 40008 1: 30003 2: 30006 3: 20008 4: 10007 5: 30000 6: 50000 7: 3 8: 2
Aufgabe 1
Welche anderen Anordnungen von Programm und Daten kannst Du Dir vorstellen? Welche Vor- und Nachteile ergeben sich daraus - auch für die Ausführung des Programms?
Aufgabe 2
Gegeben ist das Murmelprogramm
0 tst 0 1 jmp 3 2 jmp 9 3 tst 1 4 jmp 6 5 jmp 9 6 dec 0 7 dec 1 8 jmp 0 9 hlt
und die folgende Speicherbelegung:
0: 2 1: 4
Wie muss der Speicher belegt werden, wenn Programm und Daten nach den oben beschriebenen Vorgaben im Speicher vorliegen sollen?