Mikroprozessor-Simulation
mit dem DC (Didaktischer Computer)
,,...dann wird sich herausstellen, dass wir, indem wir scheinbar über die
Rechenmaschine reden, uns in Wirklichkeit mit dem menschlichen Denken befassen...''
(Leibniz)
Kurzerklärung:
AB |
Adress-Bus |
PC |
Program Counter |
AC |
Accumulator |
AR |
Adress-Register |
SP |
Stack-Pointer |
BP |
Base-Pointer |
IR |
Instruction-Register |
ALU |
Arithmetic Logical Unit |
DR |
Daten-Register |
Output |
Ausgabezeile |
|
Der DC in Aktion:
Links unten ist das Eingabefeld zu sehen. Es wurde "l" fuer das Laden eines
Programmes und "w" für "Warte" eingegeben, d.h. nach jeder Phase der
Befehlsverarbeitung wartet der DC auf Return. Der erste Befehl (JMP 4) wurde
bereits ausgeführt Der Befehl an Speicherstelle 4 wird
gerade aus dem Speicher rechts gelesen.
Dazu wird der PC (aktuell auf 4) zuerst in das Adress-Register geschrieben, was man deutlich
an den Pfeilen erkennen kann. Jeder Transport eines Register- oder
Speicherwertes wird mit Pfeilen dargestellt, kann aber abgeschaltet werden.
Der Stackpointer steht auf 127, der höchsten Speicheradresse.
Man sieht, dass der Adressbus eine Breite von 7 Bit, der Datenbus eine Breite von
13 Bit besitzt.
|
Der eingebaute Assembler:
Die für den DC ladbaren Programme sind Textdateien mit der Endung DC, die den Inhalt
des rechts dargestellten Speichers beschreiben.
Mit diesen Dateien beginnt man den Unterricht, wenn es in erster Linie
um die Verfolgung der internen Vorgänge geht. Man kann bei einfachen Programmen
die Befehle mit absoluten Adressen auch direkt im DC eingeben, dann leider aber nicht
abspeichern. Sind die internen Vorgänge klar geworden, geht es mehr
um die Nachbildung diverser Strukturen einer Hochsprache auf der Maschinenebene.
Dies wird bequemer dadurch, dass man mit symbolischen Adressen
arbeiten und diese Datei mit Endung DCL durch den eingebauten Mini-Assembler
in eine DC-Datei übersetzen lassen kann.
Hier ein Beipiel einer einfachen
DCL-Datei. Es werden die zwei Zahlen a und b gelesen, die Zahl c=(a+1)+b
berechnet und c ausgegeben.
Die dazugehörige Datei Einfach.dcl enthält symbolische Namen
für Adressen und Sprungziele (es ist auch möglich, lokale
Variablen auf dem Stack z.B. mit x EQUAL 3 zu definieren, wobei diese
Variable dann an der Speicherstelle SP+3 zu finden ist.):
; PROGRAM Einfach.dcl
JMP Anfang
A DEF 0 ; int a
B DEF 0 ; int b
C DEF 0 ; int c
Anfang:
INM A ; read (a);
INM B ; read (b);
LDA A
INC
ADD B
STA C ; c = (a+1) + b;
OUT C ; print (c);
END
Daraus macht der Mini-Assembler folgende Datei, die deutlich schwerer lesbar ist:
0 JMP 4
1 DEF 0
2 DEF 0
3 DEF 0
4 INM 1
5 INM 2
6 LDA 1
7 INC
8 ADD 2
9 STA 3
10 OUT 3
11 END
- Weitere Beispiele für DCL-Programme
(Schleifen, Methoden, Parameterübergabe, Funktionen und Rekursion insbesondere
für Fibonacci-Zahlen und Türme von Hanoi).
- GGT-Berechnung (nicht-rekursive Version) von
Clemens Adolphs (GK 12 2002/03)
- GGT-Berechnung (rekursive Version) von
Clemens Adolphs (GK 12 2002/03)
Weitere Informationen und Arbeitsblätter:
Download:
- beispiel.zip - Beispiele
- DC.EXE
- Das eigentliche Programm DC.EXE (Version 6.6); unter Windows 7/8
lauffähig in einer DOSBox
Links zu anderen Simulatoren: