Eigene Makrobefehle
Aufgabe 1: Ergänzen des Micro-Codes
Finde anhand der JOHNNY-Dokumentation (normalerweise beim Programm dabei) heraus, wie man Folgen von Mikrobefehlen zu einem eigenen Makrobefehl mit selbst gewählten Namen zusammenstellen oder einen bereits bestehenden Befehl in seiner Mikrobefehlsfolge abändern kann.Aufgabe 2: Optimierung
Betrachte die Folge von Mikrobefehlen zum Makrobefehl TAKE. Du wirst feststellen, dass man diese Folge noch optimieren kann, so dass man einen Schritt bei der Abarbeitung spart. Ändere den Micro-Code entsprechend.Aufgabe 3: Verdoppeln als eigener Befehl
Angenommen, das Verdoppeln von Zahlen wäre eine sehr sehr wichtige Rechenoperation. Konstruiere einen eigenen Befehl mit Namen DBL zum Verdoppeln einer Zahl an der angegebenen Adresse.Aufgabe 4: Ein Mehr-Adress-Befehl
Bisher war jeder Befehl alleine in einer Speicherstelle untergebracht, in der Form "OP.ADR". Was auf diese Weise nicht mit einem einzigen Befehl funktionieren kann, ist beispielsweise das Kopieren von Speicherinhalten auf eine andere Adresse. Denn hier müsste der Befehl sowohl die Adresse der zu kopierenden Zahl als auch die Ziel-Adresse kennen, wohin sie kopiert werden soll. Aber auch das lässt sich mit JOHNNY bewältigen, indem man die Zieladresse einfach in die nächste Speicherstelle schreibt."Kopiere den Inhalt der Speicherstelle 10 auf die Speicherstelle 15" könnte dann als Programm so aussehen
000: CPY 010 001: 015Konstruiere einen Makrobefehl CPY, der dieses Programm sinnvoll zum Laufen bringt.
Aufgabe 5: Konstanten in den Akkumulator laden
Wie wir mehrfach gesehen hatten, lädt der Befehl TAKE eine Zeile des RAM in den Akkumulator, und zwar diejenige Zeile, die durch die Adresse hinter TAKE bestimmt ist. Für manche Anwendungen ist es jedoch hilfreich, wenn man direkt Konstanten in den Akkumulator laden kann. Natürlich kann man das erreichen, dass man die Zahl an eine bestimmte Adresse des RAM setzt und diese dann mit TAKE in den Akkumulator lädt. Aber das wird sehr schnell recht unübersichtlich. Schöner wäre es, wenn es einen Befehl, zum Beispiel TACO (für "TAke COnstant") gäbe, dem man statt einer Adresse im RAM die Konstante direkt mitgeben könnte. Das Problem: Die Adressen bei JOHNNY haben nur drei Stellen, Konstanten können bis zu 5 Stellen haben. Das Problem lässt sich jedoch umgehen, indem man (wie bei Aufgabe 4 auch) einen Befehl über zwei Zeilen des RAM definiert. Die erste Zeile würde also nur den Befehlscode von TACO beinhalten (die Adresse dahinter wäre egal) und in der nächsten Zeile würde dann die Konstante stehen. Realisiere den Befehl TACO, so dass der folgende Programmabschnitt die Zahl 11.015 in den Akkumulator lädt.000: TACO 000 001: 11.015
Quellen
- [1]: Erweiterung des Befehlssatzes - Urheber: PD - Lizenz: inf-schule.de