Nachricht für neue Nutzer.
Nachricht für engagierte Nutzer.

Lernpfad Know-How-Computer/KHC-Maschinensprache - erste Schritte Teil 1

Aus ZUM-Unterrichten

Unser erstes KHC-Programm
In diesem Kapitel lernst du die beiden Maschinenbefehle inc x und stp kennen und schreibst damit dein erstes Programm.

Erstes Programmbeispiel "x plus 2"

Was soll das Programm tun?

Das Programm "x plus 2" soll den Wert in der Speicherzelle Nr. 4 um den Wert 2 erhöhen. Wenn also zu Beginn in der Speicherzelle 4 der Wert 0 steht, dann soll dort nach Ausführung des Programms der Wert 2 stehen.

Programmidee
Das Programm dazu ist ziemlich simpel. Es besteht einfach aus zwei inc-Befehlen. inc ist eine Abkürzung für "increment", auf Deutsch: hochzählen.

inc x
Der Befehl inc x bewirkt zweierlei: erstens wird der Datenwert, der an der Adresse x im Hauptspeicher steht, um 1 erhöht. Es wird also nicht der Wert x selbst hochgezählt, sondern der Wert, der an der Adresse x steht. Außerdem wird anschließend auch der Programmzähler um 1 erhöht, zeigt dadurch also auf die nachfolgende Zelle.

Programm schreiben

Aufgabe

Lege auf einem Blatt Papier eine Hauptspeichertabelle mit zwei Spalten an. Vier Zeilen für vier Speicherzellen reichen erst mal aus. Achte darauf, dass die Zeilen groß genug werden, so dass bei Bedarf auch ein paar Streichhölzer hineinpassen. Beschrifte die Zeilen in der vorderen Spalte mit den Adressen 1, 2 usw. Schreibe in die ersten beiden Zellen in die zweite Spalte jeweils den Befehl inc 4. Die restlichen Zellen bleiben erst mal leer. Den Stift legst du so auf das Blatt, dass er auf die oberste Zeile, also auf die Zelle mit der Adresse 1 zeigt.

Das Ganze sieht zu Beginn also so aus:
==> 1: inc 4
    2: inc 4
    3: 0
    4: 0

Programm ausführen

1. Schritt

Zu Beginn steht der Programmzähler immer auf dem Wert 1, d.h. der Stift zeigt auf die Zelle mit der Adresse 1. Da in dieser Zelle der Befehl inc 4 steht, wird der bisherige Wert 0 in Speicherzelle 4 um 1 erhöht. Du legst also ein Streichholz in die bisher leere Zelle Nr. 4. Außerdem wird der Programmzähler um 1 erhöht, enthält jetzt also die Adresse 2. Du legst daher den Stift so, dass er nun auf die Adresse 2 zeigt. Hier steht in diesem Fall noch mal der Befehl inc 4. Nach dem 1. Schritt sieht das Ganze also so aus:

    1: inc 4
==> 2: inc 4
    3: 0
    4: 1
2. Schritt

Aufgabe
Führe den nächsten Programmschritt, also den Befehl in Zelle 2 aus. Wie ändern sich Zelleninhalte und Programmzähler?

Die Zahl 1 in Speicherzelle 4 wird noch mal um 1 erhöht, also auf den Wert 2. Außerdem wird der Programmzähler auch wieder um 1 erhöht, enthält jetzt also die Adresse 3. Hier das Ergebnis:

    1: inc 4
    2: inc 4
==> 3: 0
    4: 2
3. Schritt

Eigentlich sieht es so aus, als hätten wir das Ziel erreicht, denn in der Speicherzelle 4 wurde ja tatsächlich der ursprüngliche Wert 0 um 2 erhöht. Aber es gibt ein Problem!

Der Computer arbeitet, nachdem die Ausführung eines Programms einmal von Außen angestoßen wurde, grundsätzlich stur nach der Devise: "Immer den nächsten Befehl ausführen, auf den der Programmzähler zeigt." Allerdings enthält in unserem Programm die Zelle Nr. 3, auf die der Programmzähler jetzt zeigt, gar keinen ausführbaren Befehl! Bei einem echten Computer führt so etwas zu einem so genannten Laufzeitfehler, im schlimmsten Fall stürzt der Computer sogar ab.

Das Programm besitzt also noch den Schönheitsfehler, dass es nicht von sich aus zum richtigen Zeitpunkt anhält. Dies können wir aber leicht korrigieren, indem wir in Speicherzelle 3 den Befehl stp (für Stop) hinzufügen.

stp
Der stp-Befehl beendet das Programm ordnungsgemäß.

Die korrekte Version unseres ersten Programms sieht dann so aus:

1: inc 4
2: inc 4
3: stp
4: 0

Wenn wir jetzt das Programm ab Adresse 1 neu starten und schrittweise ausführen, wird mit den ersten beiden Befehlen der Wert in Zelle 4 wieder um 2 erhöht. Im 3. Schritt wird das Programm jetzt aber mit stp sauber beendet, denn der Befehl stp befiehlt dem Computer, dass er mit der Programmausführung aufhören soll.

Der KHC-Emulator

In diesem Lernpfad steht dir ein Programm zur Verfügung, das die Papierversion des Know-How-Computers im Browserfenster nachbildet. Es heißt KHC-Emulator (emulieren = nachbilden). Am Beispiel unseres ersten Programms "x plus 2" kannst du den Emulator jetzt gleich mal ausprobieren.

  • Das Programm "x plus 2" wurde hier schon in den KHC-Hauptspeicher geladen und das einzeilige Textfeld Programmzähler enthält die Adresse 1 und den Befehl inc 4, der in der ersten Zelle steht.
  • Mit dem Schalter Ausführen (Funktionstaste F9, im Firefox STRG+F9) wird das Programm Schritt für Schritt ausgeführt. Dabei kannst du beobachten, wie sich der Programmzähler und der Inhalt der Speicherzelle 4 im Hauptspeicher bei jedem Schritt ändern, bis der stp-Befehl erreicht wird.
  • Der Hauptspeicher wird im KHC-Emulator durch ein mehrzeiliges Textfeld dargestellt, dessen Inhalt auch per Tastatureingabe verändert werden kann.
  • Tastatureingaben im Hauptspeicher-Textfeld werden mit dem Schalter Neustart (Funktionstaste F8, im Firefox STRG+F8) beendet. Der Programmzähler zeigt danach immer auf die Speicherzelle Nr. 1.
  • Mit dem Schalter "x plus 2" unterhalb des Hauptspeichers kannst du dieses Programm, also die ursprüngliche Speicherkonfiguration, erneut laden.
Aufgabe

Experimentiere mit dem KHC-Emulator, indem du den Inhalt des Hauptspeichers veränderst und das Programm anschließend erneut ausführst!

  • Was passiert zum Beispiel, wenn du den stp-Befehl in Zelle 3 durch den Wert 0 ersetzt?
  • Schreibe ein Programm, das den Inhalt von Speicherstelle 5 um den Wert 3 erhöht.
  • Schreibe ein Programm, mit dem du herausfinden kannst, welches die größte Zahl ist, die der KHC-Emulator verarbeiten kann.
Programm testen im KHC-Emulator
# x plus 2 1: inc 4 2: inc 4 3: stp 4: 0