Simulation des Von-Neumann-Rechners
mit dem Didaktischen Computer (DC)


Stand: November 2010

Der hier vorgestellte Modellrechner stützt sich eng auf des Konzept des DC des Kollegen Horst Gierhardt (www.gierhardt.de).
Für unsere Zwecke wurde der DC reduziert. Das 'Original' ist auf der Website des Kollegen Gierhardt ausführlich beschrieben und der Befehlssatz dokumentiert.

 

Der Modellrechner besitzt
Befehlszählregister PC (program counter)
Befehlsregister IR (instruction register)
Adressregister AR

Der aktuelle Befehl besteht aus dem Operationsteil und dem Adressteil. Das Steuerwerk dekodiert den Befehl und schreibt den Operationsteil in das Befehlsregister, den Adressteil in das Adressregister

 

 

Für die Befehlsausführungsphase sind zwei Register wichtig.

Akkumulator (AC)
Der Akkumulator ist ein Register mit besonderer Funktion. In ihm steht der erste Operand und nach der Operation ist dort das Ergebnis abgelegt.

Datenregister (DR)
Das Datenregister speichert den zweiten Operanden bei Rechenoperationen oder vermittelt den Datenaustausch mit dem Speicher.

 

 

 

Download der JAVA-Anwendung (JAR-Datei)

 

Der Ablauf orientiert sich an dem Von-Neumann-Rechner und seinen Prinzipien. Nach dem Laden des Programms oder einem Reset steht der Programmzähler PC auf dem Wert 0. In der aktuellen Version des Programms sind noch nicht alle Buttons funktionsfähig: Es ist nur der Einzelschrittmodus möglich.

 

Prozessoren arbeiten im Binärsystem, d.h. sie erwarten Befehle in Maschinensprache.

Die Maschinensprache (auch Maschinencode oder Nativer Code genannt) bezeichnet ein System von Instruktionen, die der jeweilige Prozessor eines datenverarbeitenden Systems direkt und ohne Kompilierung ausführen kann.
(Quelle: http://de.wikipedia.org/wiki/Maschinensprache Assemblersprache)

Da Maschinensprache für uns schwer lesbar sind, verwendet man eine Assemblersprache. Eine Assemblersprache ist eine spezielle Programmiersprache, welche die Maschinensprache einer spezifischen Prozessorarchitektur in einer für den Menschen lesbaren Form repräsentiert. Jede Computerarchitektur hat folglich ihre eigene Assemblersprache.
(Quelle: http://de.wikipedia.org/wiki/Assemblersprache)

Symbolische Befehle (Mnemonics) bilden die lesbare Form der Maschinenbefehle.

Die Assembler-Befehlsliste des Modellrechners:

Mnemonic Bedeutung
LDA LOAD INTO ACCUMULATOR: Lade den Wert der angegebenen Speicherstelle in den Akkumulator.
STA STORE ACCUMULATOR TO MEMORY: Speichere den Akkuinhalt an der angegebenen Speicherstelle ab.
ADD ADD TO ACCUMULATOR: Addiere den Wert der angegebenen Speicherstelle zum Akkuinhalt.
SUB SUBTRACT FROM ACCUMULATOR: Subtrahiere denWert der angegebenen Speicherstelle vom Akkuinhalt.
NEG NEGATE ACCUMULATOR: Negiere Akkuinhalt.
INC INCREMENT ACCUMULATOR: Erhöhe Akkuinhalt um 1.
DEC DECREMENT ACCUMULATOR: Erniedrige Akkuinhalt um 1.
OUT OUTPUT MEMORY: Gibt den Wert der angegebenen Speicherstelle an die Output-Einheit.
INM INPUT TO MEMORY: Speichere die von der Input–Einheit gelesene Zahl an der angegebenen Adresse ab.
Das Programm hält bei diesem Befehl an und wartet auf die Eingabe einer Zahl.
END ENDE: Programm beenden.
DEF DEFINE word: Mit 34 DEF 3 erhält die Speicherstelle mit der Adresse 34 den Wert 3 zugewiesen.
Dies ist keine vom Mikroprozessor ausführbare Anweisung, sondern dient nur der Wertbelegung
von Speicherstellen beim Einlesen eines DC–Programmes oder im Direktmodus.
JMP JUMP: Unbedingter Sprung. Springe zur angegebenen Speicherstelle
und fahre mit dem dort stehenden Befehl fort.
JMS JUMP IF MINUS: Springe zur angegebenen Speicherstelle und fahre mit dem dort stehenden Befehl fort,
wenn der Akkuinhalt negativ ist. Wenn nicht, dann fahre mit dem nächsten Befehl fort.
JPL JUMP IF PLUS: Sprung, wenn Akkuinhalt > 0.
JZE JUMP IF ZERO: Sprung, wenn Akkuinhalt = 0.
JNM JUMP IF NOT MINUS: Sprung, wenn Akkuinhalt >= 0.
JNP JUMP IF NOT PLUS: Sprung, wenn Akkuinhalt <= 0.
JNZ JUMP IF NOT ZERO: Sprung, wenn Akkuinhalt <> 0.

 

 

Quellen & Links

http://www.oberstufeninformatik.de/
http://www.gierhardt.de/
http://tams-www.informatik.uni-hamburg.de/applets/baukasten/DA/Inhalt.html (Funktionsweise von Computersystemen)
http://math.hws.edu/TMCM/java/index.html (englisch)