Erkundung Programmzähler
Der Programmzähler
Bei der Abarbeitung eines Maschinenprogramms muss man jeweils die Position des nächsten auszuführenden Befehls bestimmen.
Bei Programmen ohne Sprungbefehle kann man einfach zur nächsten Programmzeile übergehen.
Für ein Programm mit Sprung- und Testbefehlen ist das schon etwas komplizierter.
Die Adresse des jeweils nächsten auszuführenden Befehls wird im Programmzähler (kurz "PC" für "program counter") verwaltet.
Experimente mit dem Programmzähler
Im CPU-Fenster siehst du jetzt u. a. den PC. Das Steuersignal zum Inkrementieren kann im Gegensatz zu unseren früheren Experimenten mit verschiedenen Registern nicht mehr direkt angeklickt werden. Stattdessen gibt es zwei Schalter A und B. Schalter A ist über ein ODER-Gatter (≥1) mit dem Inkrementiereingang des PC verbunden, Schalter B zusätzlich über ein UND-Gatter (&).
Wenn du diese Gatter nicht kennst, kannst du einfach im CPU-Fenster ausprobieren, was sie bewirken (Aufgaben 1 und 2). Oder aber du schaust hiernach.
Aufgabe 1
Erhöhe schrittweise die im PC abgelegte Adresse. Nutze dazu den Schalter A. Auf diese Weise kannst du dir auch einen Überblick über den gesamten Inhalt des Speichers verschaffen.
Aufgabe 2
Stelle zunächst den Ausgangszustand wieder her, indem du die Seite neu lädst.
(a) Versuche erneut, die im PC abgelegte Adresse zu erhöhen. Nutze dazu jetzt aber Schalter B.
(b) Beim Betätigen von Schalter B hat sich nichts getan?!
- Stelle nun den PC gezielt auf die Adresse 9 ein. Du kannst sie direkt in den PC schreiben oder wiederholt den Schalter A betätigen.
- Öffne anschließend das Tor, mit dem der Speicher auf den Datenbus schreibt.
- Beobachte, wie sich beim Öffnen des Schreibtors das an den Datenbus angeschlossene Bauteil verhält. Wenn dir das zu schnell ging, kannst du einfach das Schreibtor des Speichers noch einmal schließen und neu öffnen.
(c) Betätige jetzt wieder den Schalter B und beobachte den PC.
(d) Versuche, das unterschiedliche Verhalten von Schalter B in Teilaufgabe (a) und (c) zu erklären.
Vielleicht hilft es dir, wenn du zum Vergleich die Schritte (b) und (c) noch einmal für die Adresse 8 wiederholst.
(e) Überlege dir, weshalb Schalter B trotz seiner sehr eng begrenzten Funktionalität eine sinnvolle Ergänzung zu Schalter A darstellt.
Tipp: der tst-Befehl.
Aufgabe 3
Es gibt noch eine dritte Möglichkeit, den aktuellen Wert des PC zu verändern. Beim jmp-Befehl z. B. ist ein schrittweises Erhöhen nicht sinnvoll. Am einfachsten schreibt man die Zieladresse direkt in den PC.
Dazu wird allerdings ein zusätzliches Hilfsregister benötigt, das die angepeilte Zieladresse "kennt".
Versuche also, durch geeignetes Öffnen von Schreib- und / oder Lesetoren und unter Verwendung des Hilfsregisters die Adresse 3 in den PC zu schreiben (völlig unabhängig von dessen aktuellem Wert).
Wenn du den aktuellen Wert des Hilfsregisters veränderst, kannst du auch andere Adressen in den PC schreiben. Probiere das auch einmal aus.