Fachkonzept - Der Speicher als Programmspeicher
Wir haben gesehen: Maschinenprogramme aus Makrobefehlen lassen sich leichter verstehen und vor allem viel kompakter hinschreiben als eine Folge von Mikrobefehlen.
Programme im Arbeitsspeicher
Wie aber lassen sich Makrobefehle inklusive Adresse im Speicher (RAM) ablegen, der doch eigentlich nur Zahlen speichern kann? Der Trick besteht darin, die verschiedenen Makrobefehle durchzunummerieren und nur noch die Nummern der Befehle sowie die zugehörigen Adressen und andere Zusätze zu speichern. Wie das im einzelnen geschieht, ist von Rechner zu Rechner verschieden.
Umsetzung in JOHNNY
In unserem Simulator JOHNNY z.B. kann jede Speicherstelle eine einzige Zahl zwischen 0 und 19999 speichern. Wie also kann man einen Befehl wieTAKE 120im RAM von JOHNNY speichern?
Zunächst überlegt man sich hierfür, dass dieser Befehl eigentlich zweigeteilt ist.
- Zum einen ist da die eigentliche Operation mit dem Namen „ADD“. Es wäre naheliegend, zusätzlich zum Namen einfach einen Zahlencode für jede solche Operation festzulegen, den "Operation Code" oder kurz "Op-Code". Wenn wir annehmen, dass wir wahrscheinlich nicht mehr als 15 Befehle brauchen, reichen zwei Dezimalstellen locker, um allen Befehlen eine eindeutige Nummer zu geben. Wir könnten also TAKE z.B. die Op-Code 01 geben (die führende Null, nur um klarzumachen, dass Op-Codes bei uns hier immer zwei Dezimalstellen haben).
- Zum anderen ist da auch noch die Adresse, auf die sich der Befehl bezieht. Der Speicher unseres Simulationsrechners enthält 1000 Speicherstellen mit Adressen zwischen 0 und 999. Um die Adressen darzustellen brauchen wir also drei weitere Dezimalstellen.
- Die 10000er- und die 1000er-Stelle sollen den Op-Code des Befehls beschreiben. Da die Zahlen im Speicher von JOHNNY Werte von 0 bis 19999, könnte man im Grunde 20 verschiedene Op-Codes definieren, wobei wir Op-Code 00 aus bestimmten Gründen zunächst weglassen, also 19 verschiedene OP-Codes. Mehr als genug für unsere weiteren Überlegungen.
- Die restlichen drei Stellen (100er-, 10er- und 1er-Stelle) sollen die Adresse beschreiben, auf die sich der Befehl bezieht.
Erleichterungen für die Benutzer in JOHNNY
Damit man sich als Benutzer des Simulators die Zahlen für die einzelnen Operationen nicht merken muss, wurden im Simulationsprogramm zwei Erleichterungen eingeführt:
- Bei der Darstellung des Arbeitsspeichers werden hinter den eigentlichen Speicherstellen als Kommentar die Makrobefehle angezeigt (falls die Zahl möglicherweise einem Makrobefehl entspricht).
-
Bei der Eingabe von Werten in den RAM kann man ein Auswahlmenü anklicken, das direkt die einzelnen Operationen mit ihren entsprechenden Zahlen zur Auswahl stellt.
- Eigentlich ist es egal, an welcher Speicherstelle des RAM ein Programm beginnt. Praktisch ist es allerdings, wenn es an der Speicherstelle 000 beginnt, weil man dann mit der RESET-Taste in der Werkzeugleiste direkt zum ersten Befehl springen kann.
Quellen
- [1]: Programme im Arbeitsspeicher - Urheber: PD - Lizenz: inf-schule.de
- [2]: Programme im Arbeitsspeicher - Urheber: PD - Lizenz: inf-schule.de
- [3]: Kodierung eines Befehls bei JOHNNY - Urheber: PD - Lizenz: inf-schule.de
- [4]: Makro-Befehl im JOHNNY-RAM - Urheber: PD - Lizenz: inf-schule.de
- [5]: Auswahl von Makrobefehlen bei JOHNNY - Urheber: PD - Lizenz: inf-schule.de