i

Manuelle Befehlsausführung

Ausführung direkt im Operationswerk

Mit dem Wissen aus den letzten Abschnitten bist du jetzt in der Lage, einzelne Befehle und auch ganze Programme direkt im Operationswerk auszuführen.

Führe nun schrittweise das im Datenspeicher des Bonsai abgelegte Programm aus.

  • Denke daran, dass die ersten beiden Schritte – Hol- und Decodierphase des Befehlszyklus – für alle Befehle identisch ablaufen.
    Nur in der Ausführphase musst du – je nach Befehl – unterschiedlich vorgehen.
  • Denke auch – wie immer – daran, Tore, die in einem früheren Schritt geöffnet wurden, wieder rechtzeitig und in der richtigen Reihenfolge zu schließen.

Die Aufgaben 1 bis 4 wirst du mehrfach erledigen müssen.
Aufgabe 5 (Programmende) natürlich nur ein einziges Mal.

Aufgabe 1 - jmp (30003 bzw. 30001) ausführen

  • Stelle sicher, dass im PC-Register am Anfang wirklich eine Null steht. Zu einem späteren Zeitpunkt könnte dort auch eine Vier stehen. So kann der erste (bzw. – später – fünfte) Befehl des Programms ausgeführt werden.
  • Führe jetzt die Hol- und Decodierphase für den jmp-Befehl durch.
  • Zur Ausführung des Befehls musst du nur dafür sorgen, dass der durch den linken Filter des IR berechnete Wert (er liegt bereits am Adressbus an!) in das PC-Register geschrieben wird.

Aufgabe 2 – tst (40008) ausführen

  • Kontrolliere, ob jetzt im PC wirklich die Adresse 3 steht.
  • Hole und decodiere den Befehl 40008.
  • Jetzt müsste am Adressbus die 8 anliegen.
  • Um den an Adresse 8 gespeicherten Wert auf „Null“ testen zu können, musst du ihn aus dem Speicher auf den Datenbus legen.
  • Anschließend musst du die beiden Schalter, die den Wert des PC unbedingt oder bedingt erhöhen (hier ohne die Bezeichnung A und B), betätigen.

Welchen Wert hat der PC jetzt, wenn an Adresse 8 ein Wert größer Null steht?
Und welchen Wert hat der PC, wenn an Adresse 8 ein Wert gleich Null steht?

Aufgabe 3 – inc (10007) ausführen

  • Kontrolliere, ob jetzt im PC die Adresse 4 oder die Adresse 5 steht.
  • Hole und decodiere den entsprechenden Befehl (30001 oder 50000).
  • Solange an Adresse 8 keine Null steht (das siehst du daran, dass du gerade den Befehl 10007 geholt und decodiert hast), musst du für die Ausführung des inc-Befehls sorgen. Andernfalls schaue bei Aufgabe 5 für den hlt-Befehl nach.
  • Kontrolliere, ob am Adressbus wirklich eine 7 anliegt.
  • Transportiere den Wert, der an Adresse 7 steht, in den Akku.
  • Inkrementiere den Wert des Akkus.
  • Schreibe den neuen Akku-Wert an die Adresse 7 des Speichers zurück.
  • Vergiss nicht, den PC um eins zu erhöhen.

Aufgabe 4 – dec (20008) ausführen

  • Kontrolliere, ob jetzt im PC wirklich die Adresse 2 steht.
  • Verfahre ab hier parallel zum Holen, Decodieren und Ausführen des inc-Befehls. Der einzige Unterschied liegt in der Verarbeitung im Akku (Dekrementieren statt Inkrementieren).

Aufgabe 5 – hlt (50000) ausführen

  • Kontrolliere, ob jetzt im PC wirklich die Adresse 5 steht. Wenn ja, darfst du dich jetzt richtig freuen. Denn:
  • Den hlt-Befehl musst du zwar – wie alle anderen auch – zuerst holen und decodieren. Danach brauchst du bei der manuellen Programmausführung aber nichts mehr zu tun. Dadurch, dass im IR die 50000 steht, siehst du zuverlässig, dass du erfolgreich am Ende des Programms angekommen bist. Bei der automatisierten Ausführung durch das Steuerwerk wird es später einen zusätzlichen Hinweis auf das Programmende geben.

Aufgabe 6 – ein komplettes anderes (eigenes?) Programm ausführen

Jetzt solltest du einmal ausprobieren, ob du auch andere Bonsai-Programme selbstständig ausführen kannst. Da der Befehlssatz des Bonsai ja auf fünf Befehle beschränkt ist, musst du nur eine neue Reihenfolge der Befehle und neue Adressteile beachten.

Vielleicht hast du aus der Arbeit mit dem "Murmelrechner" ein anderes Programm parat.
Vielleicht hast du auch eine neue eigene Idee.

Falls nicht, probiere doch einfach das folgende Programm aus:

  40010
  30003
  30007
  10012
  20010
  20011
  30000
  50000

  3
  1
  3
  0

Bei diesem Programm solltest du nach erfolgreicher Ausführung am Ende im Datenspeicher die folgenden Datenwerte finden:

  • Adresse 9: unverändert = 3
  • Adresse 10: jetzt 0
  • Adresse 11: jetzt 2 (= die Differenz aus den ursprünglichen Werten von Adresse 9 und Adresse 10)
  • Adresse 12: jetzt 1 (= der gesicherte ursprüngliche Wert von Adresse 10)

Suche

v
12.3.4.1.12
dev.inf-schule.de/rechner/bonsai/cpu/operationswerk/befehlsausfuehrung
dev.inf-schule.de/12.3.4.1.12
dev.inf-schule.de/@/page/JddEYQQjlwNYs8up

Rückmeldung geben