Der Know-How-Computer

Dieses Programm entstand in Anlehnung an die KNOW-HOW-Computer Paper-CPU, die in Zusammenarbeit zwischen WDR-Computerclub und der Zeitschrift PC-Magazin entwickelt wurde. Die Abläufe habe ich durch den Einsatz von Java-Script automatisiert und den Befehlssatz und das Design der CPU etwas erweitert. Der Befehlssatz umfasst nun 12 Befehle und es wurde ein Datenstack mit eingebaut. Diese CPU (Central Prozessing Unit) soll die grundsätzliche Arbeitsweise eines Computerprozessors verdeutlichen und dient lediglich Ausbildungszwecken.

Programmspeicher      

DatenregisterDatenstapel
BefehlArgumentAdresseProgrammzähler PZNummerDatenwortStapelworte
1

Erläuterungen

  
1 Element 0
2 2 Element 1
3 3 Element 2
4 4 Element 3
5 5 Element 4
6 6  
7 7  
8 8  
9 9  
10 10  
11 11  
12 12  
13 13  
14 14  
15 15  
16 16  
17 17  
18 18  
19 19  
  20 20  
    
Hier können bereits vorgefertigte Programme in den Programmspeicher geladen werden.
Fehlermeldung

Aufbau

  1. Programmspeicher
    Auf der linken Seite ist der Programmspeicher angeordnet. Er besitzt eine Größe von 20 Zeilen, wobei die letzte Zeile den festen Befehl STOP enthält. In jeder Zeile des Programmspeichers kann ein Befehl mit dem zugehörigen Argument abgelegt werden. Durch anklicken der Auswahlmenüs kann man den Inhalt des Programmspeichers verändern und so ein eigenes Programm erstellen. Während der Auswahl des Befehls erscheint jeweils eine kurzer Hilfstext im Erläuterungsfenster.
  2. Programmsteuerung und Programmzähler
    In der Mitte sind die Bedienknöpfe für den Programmstart und der Programmzähler angeordnet. Darunter ist ein Zeiger zu sehen, der immer auf die aktuelle Zeile des Programmspeichers weist, die als nächste bearbeitet wird. Im Textfeld daneben steht jeweils eine kurze Erläuterung zu dem aktuellen Befehl.

    Mit diesem Button kann ein Einzelschrittbetrieb der CPU durchgeführt werden. Jedesmal nach dem Betä,tigen dieses Schalters wird eine einzelne Befehlsanweisung ausgeführt, bis ein STOP-Befehl erreicht wird. In dieser Betriebsart kann die Funktionsweise der CPU sehr gut verfolgt werden und es können eigene Programme Schritt für Schritt getestet werden.

    Mit diesem Button wird der Programmzähler wieder auf 1 zurückgesetzt (Reset) und der Programmablauf kann erneut gestartet werden.

    Mit diesem Button kann der Programmlauf gestartet werden, sodass die CPU einen Befehl nach dem anderen ausführt, bis sie auf einen STOP-Befehl trifft.
  3. Datenspeicher
    Auf der rechten Seite befinden sich die Datenspeicher. Die CPU verfügt über einen Satz von 20 Datenregistern, in denen Zahlen abgelegt werden können. Zusätzlich besitzt die CPU noch einen Datenstapel (Datenstack) auf dem Daten abgelegt und von dem Daten entnommen werden können.
    Datenregister und Datenstapel sind zwei unterschiedliche Organisationsarten von Datenspeichern. Allgemein können in den Zellen eines Datenspeichers verschiedene Zahlenwerte gespeichert werden, sodass z.B. Zwischenergebnisse innerhalb der Programmabarbeitung durch die CPU abgelegt werden können.
  4. Programme
    Unterhalb der CPU befinden sich eine Reihe von Buttons, mit denen bereits vorgefertigte Programme in den Programmspeicher geladen werden können. Dazu ist einfach nur der entsprechende Button zu drücken. Sollte beim Laden ein Fehler auftreten, so wird in dem Fenster "Fehlermeldung" ein entsprechender Hinweis angezeigt.

Der Befehlssatz der CPU

Die CPU besitzt eine Reihe grundlegender Befehle, die im Prinzip in allen Prozessoren vorkommen. Der Befehlssatz ist sehr gering und umfasst nur 12 Befehle. Damit handelt es sich um eine sogenannte RISC-CPU (Reduced Instruction Set Computing). Von den 12 Befehlen benötigen die 10 Befehle 1+, 1+, SET, CLR, ADD, SUB, GOTO, TEST, PUSH, POP ein Argument X, dass Werte von 1 bis 20 annehmen kann. Die Befehle NOP und STOP benötigen kein Argument. Bei diesen Befehlen wird das ausgewählte Argument ignoriert.

  1. NOP
    Dieser Befehl macht buchstäblich nichts. Am Zustand der CPU verändert sich nichts, nur der Programmzähler wird um 1 weiter geschaltet.
  2. STOP
    Liest die CPU diesen Befehl, so stoppt sie ihre Arbeit. Dieser Befehl wird verwendet, um das Ende des Programms zu markieren, sodass die CPU dort ihre Arbeit einstellt. Die CPU kann durch den Button "Neustart" wieder aus dem Stoppzustand geholt werden.
  3. 1+ X
    Dieser Befehl bewirkt, dass der Inhalt eines Datenregisters um 1 erhöht wird. Das Argument X gibt an, welches Datenregister verändert werden soll. Befindet sich z.B. im Datenregister Nummer 5 die Zahl 7 und es wird der Befehl 1+  5 ausgeführt, so wird verändert sich der Inhalt des Datenregisters Nummer 5 auf 8.
  4. 1- X
    Dieser Befehl bewirkt, dass der Inhalt eines Datenregisters um 1 verringert wird. Das Argument X gibt an, welches Datenregister verändert werden soll. Befindet sich z.B. im Datenregister Nummer 4 die Zahl 75 und es wird der Befehl 1-  4 ausgeführt, so wird verändert sich der Inhalt des Datenregisters Nummer 4 auf 74. Ist der Inhalt des Datenregisters Null, so wird durch diesen Befehl der Inhalt eines Datenregisters negativ (-1).
  5. SET X
    Durch diesen Befehl (SET=Setze) wird der Zahlenwert X (1...20) oben auf dem Datenstapel im Element 0 abgelegt. Alle auf dem Datenstapel bereits abgelegten Zahlen rutschen um eine Position nach unten, wobei der Zahlenwert aus dem Element 4 verloren geht.
  6. CLR X
    Durch diesen Befehl (CLR=CLEAR) wird der Inhalt des Datenregisters Nummer X auf Null gesetzt.
  7. ADD X
    Durch diesen Befehl (ADD=Addition) wird zum Inhalt des Datenregisters X der obere Wert des Datenstapels (Element 0) dazuaddiert. Das Stapelelement 0 wird dabei nicht vom Stapel entfernt.
  8. SUB X
    Durch diesen Befehl (SUB=Subtraktion) wird vom Inhalt des Datenregisters X der obere Wert des Datenstapels (Element 0) abgezogen. Das Stapelelement 0 wird dabei nicht vom Stapel entfernt.
  9. GOTO X
    Dieser Befehl (GOTO= go to, gehe zu) ist ein sogenannter unbedingter Sprungbefehl. Wenn die CPU diesen Befehl aus dem Programmspeicher liest, dann überträgt sie das Argument X (1..20) in den Programmzähler. Dadurch wird das Programm in einer anderen Zeile fortgesetzt. Der Computer springt also in seiner Programmausführung zur Zeile X des Programmspeichers. Dieser Sprung ist an keine Bedingung geknüpft, wird also in jedem Fall ausgeführt.
  10. TEST X
    Dieser Befehl (TEST=teste) ist ein sogenannter bedingter Sprungbefehl. Die CPU testet, ob der Inhalt des Datenregisters X kleiner oder gleich Null ist. Wenn ja, dann wird der Programmzähler um den Wert 2 erhäht, sodass der im Programmspeicher folgende Befehl nicht ausgeführt wird. Ist der Inhalt des Datenregisters X größer als Null, so wird der folgende Befehl im Programmspeicher ausgeführt. Der Computer überspringt also in seiner Programmausführung eine Zeile im Programmspeicher, wenn die Bedingung erfüllt ist, ansonsten fährt er mit dem folgenden Befehl fort. Dieser Sprung ist also an eine Bedingung geknüpft, und je nach dem Inhalt des Datenregisters reagiert der Computer unterschiedlich. Damit ist der Computer in der Lage, eine Entscheidung zu fällen.
  11. PUSH X
    Dieser Befehl legt den Inhalt des Datenregisters X oben auf dem Datenstapel im Element 0 ab. Alle bereits auf dem Datenstapel abgelegten Zahlen rutschen um eine Position nach unten, wobei der Zahlenwert aus dem Element 4 verloren geht.
  12. POP X
    Dieser Befehl entnimmt den oberen Wert (Element 0) des Datenstapels und speichert diesen im Datenregister X ab. Der vorher im Datenregister X abgelegte Wert wird überschrieben und geht damit verloren. Alle verbleibenden Elemente des Datenstapels rutschen um eine Position nach oben und das Element 4 behält seinen Wert. Damit enthalten Element 4 und Element 3 nun den selben Zahlenwert.

letzte Änderung am 08.10.2009

Sollte jemand seine Rechte durch eine Veröffentlichung auf dieser oder einer anderen meiner Seiten verletzt sehen, bitte ich um sofortige Kontaktaufnahme. Ich werde die entsprechenden Inhalte umgehend entfernen. Somit sind sowohl ein anwaltlicher Rat als auch eine kostenpflichtige Abmahnung nicht erforderlich! Weiterhin weise ich darauf hin, dass der Inhalt verlinkter Seiten nicht in meiner redaktionellen Verantwortung liegt.
Vielen Dank

www.schlaefendorf.de 2012

www.linux-web.de