i

Erkundung Befehlsregister

Befehle als Daten

Um Befehle im Speicher als Daten ablegen zu können, müssen sie vorher in geeigneter Form codiert werden.
Da jedes Bonsai-Register nur eine natürliche Zahl als Wert annehmen kann, müssen auch die Befehle als natürliche Zahlen codiert werden. Dabei gilt ebenso wie beim Murmelrechner:

  • inc ≙ 1
  • dec ≙ 2
  • jmp ≙ 3
  • tst ≙ 4
  • hlt ≙ 5

Diese Zahlen bilden den Operationscode (kurz OP-Code).
Zusätzlich wird der Adressteil benötigt. Die Adresse wird als 4-stellige Zahl an den OP-Code angehängt. Dadurch wird der OP-Code zur Zehntausenderziffer.
Ein Befehl wie z. B. inc 7 wird also durch die natürliche Zahl 10007 dargestellt.

Beispiel für ein ganzes Programm (das, das zur Zeit im Datenspeicher abgelegt ist): ProgrammAssemblerMaschinensprache

Decodierung von Befehlen

Zur Verarbeitung müssen alle Befehle zuerst wieder decodiert werden, d. h. ein Maschinenbefehl wie z.B. 40008 muss in die beiden Bestandteile OP-Code (hier: 4) und Adressteil (hier: 8) zerlegt werden. Dies erfolgt im Befehlsregister (kurz "IR" für "instruction register").

Im CPU-Fenster siehst du oben rechts das Befehlsregister IR zusammen mit zwei Filterbausteinen Filterbaustein.

Aufgabe 1

Im Befehlsregister steht aktuell der Maschinenbefehl 40008. Öffne das Tor vom Befehlsregister zum Adressbus (roter Pfeil). Achte darauf, dass der PC nicht gleichzeitig auf den Adressbus schreibt. Beobachte die Zerlegung des Maschinenbefehls. Klicke auch einmal auf die Filterbausteine. Es werden die Rechenoperationen zum Filtern angezeigt. Du kannst diese Rechenoperationen sogar abändern (auch wenn das zunächst einmal hier wenig Sinn macht). Probiere das aus.

Aufgabe 2

Schließe nun wieder das Schreibtor des Befehlsregisters, um den ersten Befehl aus dem Datenspeicher zu laden.

  • Dazu musst du zunächst das Tor des PC zum Adressbus öffnen. Kontrolliere, ob der aktuelle Wert des PC noch Null ist.
  • Anschließend kannst du den Befehl, der an der Adresse 0 steht, über den Datenbus in das Befehlsregister schreiben. Wie das geht, hast du bei der Erkundung des Speichers gelernt.
  • Um auch diesen Befehl (30003) zu decodieren, musst du wieder das Tor vom Befehlsregister zum Adressbus öffnen.

Überlege bei jedem Schritt, welche zuvor geöffneten Tore du zuerst wieder schließen musst. Denke dabei auch immer an die richtige Reihenfolge. Zur Erinnerung: Lesetore müssen vor Schreibtoren geschlossen werden, damit ein Register seinen neuen Wert nicht verliert.

Suche

v
12.3.4.1.10
dev.inf-schule.de/rechner/bonsai/cpu/operationswerk/i_r
dev.inf-schule.de/12.3.4.1.10
dev.inf-schule.de/@/page/CeannPUIp1qQpAVP

Rückmeldung geben