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

Lernpfad Know-How-Computer/KHC-Maschinensprache - erste Schritte Teil 1: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung
Markierung: Quelltext-Bearbeitung 2017
KKeine Bearbeitungszusammenfassung
Markierung: Quelltext-Bearbeitung 2017
Zeile 56: Zeile 56:


===Der KHC-Emulator===
===Der KHC-Emulator===
Ergänzend zu der ursprünglichen Papier-Fassung des Know-How-Computers wurden im Laufe der Zeit verschiedene Emulator-Programme veröffentlicht, die seine Funktionsweise auf einem „echten” Computer nachbilden. Damit kann man recht komfortabel überprüfen, ob ein KHC-Programm korrekt funktioniert.
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.
In diesem Lernpfad wird das ZUM-Programm KHC-Emulator verwendet, das auch mit assistiven Technologien für Menschen mit Seheinschränkungen nutzbar ist.
{{clear}}
<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.  
Mit der Funktionstaste F9 (Schalter „Ausführen”) kann man das Programm Schritt für Schritt ausführen lassen.


===== 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%;">  
    |Speicherkonfiguration1=# x plus 2
    {{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
        |nohelp=true
  }} </div>
        }}
      | Experimentieren
    }}  
  </div>
</div>
</div>



Version vom 11. Juni 2025, 09:40 Uhr

Computer, verstehst du mich? - die Maschinenbefehle inc x und stp
In diesem Abschnitt lernst du die Befehle 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.

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

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 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.

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.

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

Statt den Inhalt des Hauptspeicher-Textfeldes direkt per Tastatureingabe zu verändern, kann man ein KHC-Programm auch erst in einem beliebigen Textverarbeitungsprogramm oder Texteditor schreiben und anschließend als Ganzes durch „Kopieren und Einfügen“ („Drag and Drop“) aus dem Editorfenster in den KHC-Hauptspeicher übertragen. Dabei sollte vor dem „Einfügen“ (STRG+c) im Hauptspeicher-Textfeld dessen gesamter bisheriger Inhalt markiert werden (STRG+a), damit er vollständig überschrieben wird und der Einfügevorgang mit F8 abgeschlossen werden.
Bei dieser Vorgehensweise ist zu beachten, dass in jeder importierten Textzeile die Abfolge Adresse, Doppelpunkt, Befehl oder Datenwert eingehalten werden muss. Alle KHC-Programmlistings im Lösungsteil zu den Übungsaufgaben können auf diese Weise in den Hauptspeicher des KHC-Emulators importiert werden.
Zusätzlich darf ein importierter Programmtext aber auch Kommentare enthalten. Diese beginnen mit einem Semikolon ; und reichen bis zum Zeilenende. Die Kommentare werden automatisch entfernt, wenn nach dem „Einfügen“ der Windows-Fokus das mehrzeilige Textfeld verlässt.
Vor der nächsten Programmausführung sollte ein Neustart mit dem Neustart-Schalter (F8) durchgeführt werden.
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.

Programm testen im KHC-Emulator
# x plus 2 1: inc 4 2: inc 4 3: stp 4: 0