Lernpfad Know-How-Computer/KHC-Maschinensprache - erste Schritte Teil 1: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung Markierung: Quelltext-Bearbeitung 2017 |
KKeine Bearbeitungszusammenfassung Markierung: Quelltext-Bearbeitung 2017 |
||
| Zeile 56: | Zeile 56: | ||
===Der KHC-Emulator=== | ===Der KHC-Emulator=== | ||
In diesem Lernpfad gibt es ein Programm, das die Papierversion des Know-How-Computers „nachbildet“, den so genannten „KHC-Emulator“ (emulieren = nachbilden). Damit kannst du ganz bequem testen, ob und wie ein KHC-Programm funktioniert. Hier ist z.B. unser erstes Programm „x plus 2“ schon im Hauptspeicher des Emulators geladen. | |||
<div style="width: 100%; overflow: hidden;"> | <div style="width: 100%; overflow: hidden;"> | ||
<div style="width: 60%; float: left;"> Der Hauptspeicher des Know-How-Computers wird im KHC-Emulator durch ein mehrzeiliges Textfeld dargestellt. In jeder Zeile steht vorne die Adresse der jeweiligen Zelle, dann folgt ein Doppelpunkt und dahinter der eigentliche Inhalt der Zelle. Wenn noch kein ein Programm geladen wurde, enthalten alle Speicherzellen den Datenwert 0. | <div style="width: 60%; float: left;"> Mit dem Schalter „Neustart” (Funktionstaste F8) setzt du den Programmzähler auf die Adresse 1 und mit Schalter „Ausführen” (Funktionstaste F9) wird das Programm anschließend Schritt für Schritt ausgeführt. | ||
Der Hauptspeicher des Know-How-Computers wird im KHC-Emulator durch ein mehrzeiliges Textfeld dargestellt. In jeder Zeile steht vorne die Adresse der jeweiligen Zelle, dann folgt ein Doppelpunkt und dahinter der eigentliche Inhalt der Zelle. Wenn noch kein ein Programm geladen wurde, enthalten alle Speicherzellen den Datenwert 0. | |||
Über dem mehrzeiligen Textfeld „Hauptspeicher” gibt es noch das einzeilige, schreibgeschützte Textfeld „Programmzähler”. Dieses Feld enthält immer die Adresse und den Inhalt der „aktuellen” Speicherzelle. Die Zahl vor dem Doppelpunkt in diesem Feld ist der so genannte Programmzähler. Während der schrittweisen Ausführung eines KHC-Programms gibt er immer an, in welcher Zelle gerade derjenige Befehl steht, der im nächsten Schritt ausgeführt werden soll. Dieser Befehl steht dann auch hinter dem Doppelpunkt. | Über dem mehrzeiligen Textfeld „Hauptspeicher” gibt es noch das einzeilige, schreibgeschützte Textfeld „Programmzähler”. Dieses Feld enthält immer die Adresse und den Inhalt der „aktuellen” Speicherzelle. Die Zahl vor dem Doppelpunkt in diesem Feld ist der so genannte Programmzähler. Während der schrittweisen Ausführung eines KHC-Programms gibt er immer an, in welcher Zelle gerade derjenige Befehl steht, der im nächsten Schritt ausgeführt werden soll. Dieser Befehl steht dann auch hinter dem Doppelpunkt. | ||
Zwischen den Schaltflächen und den zwei Textfeldern kann man den Windows-Fokus mit der TAB-Taste bzw. mit UMSCHALT+TAB hin und her bewegen. Wenn das mehrzeilige Textfeld „Hauptspeicher” den Fokus besitzt, kann man seinen Inhalt per Tastatur überschreiben. Die Eingabe kann man mit der Funktionstaste F8 (Schalter „Neustart”) beenden. Der Programmzähler zeigt danach auf die Speicherzelle Nr. 1. | Zwischen den Schaltflächen und den zwei Textfeldern kann man den Windows-Fokus mit der TAB-Taste bzw. mit UMSCHALT+TAB hin und her bewegen. Wenn das mehrzeilige Textfeld „Hauptspeicher” den Fokus besitzt, kann man seinen Inhalt per Tastatur überschreiben. Die Eingabe kann man mit der Funktionstaste F8 (Schalter „Neustart”) beenden. Der Programmzähler zeigt danach auf die Speicherzelle Nr. 1. | ||
===== KHC-Programme als Textdatei speichern und laden ===== | ===== KHC-Programme als Textdatei speichern und laden ===== | ||
| Zeile 74: | Zeile 73: | ||
Vor der nächsten Programmausführung sollte ein Neustart mit dem Neustart-Schalter (F8) durchgeführt werden.<br> | Vor der nächsten Programmausführung sollte ein Neustart mit dem Neustart-Schalter (F8) durchgeführt werden.<br> | ||
In umgekehrter Richtung kann man ein KHC-Programm natürlich auch mit „Kopieren“ und „Einfügen“ aus dem Hauptspeicher-Textfeld in ein Editorfenster übertragen und anschließend in einer Textdatei speichern. | In umgekehrter Richtung kann man ein KHC-Programm natürlich auch mit „Kopieren“ und „Einfügen“ aus dem Hauptspeicher-Textfeld in ein Editorfenster übertragen und anschließend in einer Textdatei speichern. | ||
</div> | </div> | ||
<div style="margin-left: 62%;"> {{KnowHowComputer | <div style="margin-left: 62%;"> | ||
{{Box| Programm testen im KHC-Emulator | |||
|{{KnowHowComputer | |||
|Speicherkonfiguration1=# x plus 2 | |||
1: inc 4 | 1: inc 4 | ||
2: inc 4 | 2: inc 4 | ||
3: stp | 3: stp | ||
4: 0 | 4: 0 | ||
|nohelp=true | |||
}} | |||
| Experimentieren | |||
}} | |||
</div> | |||
</div> | </div> | ||
Version vom 11. Juni 2025, 09:40 Uhr
inc x und stp kennen.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.
Programm schreiben
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
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.
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 gibt es ein Programm, das die Papierversion des Know-How-Computers „nachbildet“, den so genannten „KHC-Emulator“ (emulieren = nachbilden). Damit kannst du ganz bequem testen, ob und wie ein KHC-Programm funktioniert. Hier ist z.B. unser erstes Programm „x plus 2“ schon im Hauptspeicher des Emulators geladen.
