Start: CPU-Simulator (leider nur noch uni-intern ausführbar wegen geänderter Sicherheitsregeln des Webauftrittes der UniBw)
Der Mikroprogramm-Simulator demonstriert die Funktionsweise einer Mikroprogramm-gesteuerten CPU. Die CPU ist in [1] beschrieben. Der Simulator unterstützt aktuell jedoch nur einen Teil der Maschinenanweisungen. Sowohl Maschinenprogramm als auch Mikroprogramm können online geändert werden.
Beispiele
Es sind 5 Beispiele vorinstalliert:
- Zählen: Eine Zählerschleife über X
- Multiplikation: Multiplikation von A und X, Ergebnis in A
- Fibonacci-Zahlen (rekursiv): Eingabe X, Ergebnis in A
- Fibonacci-Zahlen (iterativ) : Eingabe X, Ergebnis in A
- Fakultät (rekursiv). Eingabe A, Ergebnis in A
Achtung: Die Beispiel-CPU rechnet nur mit 8-Bit. Bereichsüberschreitungen werden nicht abgefangen! Damit ergibt sich für die Fakultät ein Maximalwert von 5, und für Fibonacci-Zahlen 13.
Die Auswahl eines Beispiels hält die CPU an.
Steuerung
Die CPU wird mit dem Knopf Run gestartet bzw. angehalten. Die aktuellen Werte der Register A (Akku), X (Index), F (Flags), PC (Program-Counter), SP (Stack-Pointer) sowie der Stackinhalt und ggf. der Speicherinhalt werden für jeden Schritt angezeigt.

Die Ausführgeschwindigkeit lässt sich zwischen Slow und Maximum wählen. Alternativ kann die CPU mit der Step-Taste Schritt für Schritt ausgeführt werden. Die Taste Reset setzt die Hardware-Reset-Leitung. Die CPU führt dann mit den nächsten Schritten einen Reset durch.
Maschinenprogramm
Das Maschinenprogramm kann jederzeit editiert werden. Eine Änderung bei laufender CPU kann jedoch ein Rücksetzen bewirken.

Maschinenanweisungen können mit + hinzugefügt oder mit – gelöscht werden. Mit der Auswahlbox kann eine der verfügbaren Maschinenanweisungen ausgewählt werden. Einige Anweisungen benötigen einen Operanden. Dieser wird bei Neuauswahl auf 0x01 gesetzt, kann jedoch editiert werden. Bei Befehlen, die keinen Operanden aufweisen, dürfen auch keine eingegeben werden (da sie ansonsten als Maschinencode übernommen werden). Alle Angaben sind hexadezimal!
Folgende Befehle werden unterstützt:
Steuerung (ohne Operand)
RST HLT NOP RET
Steuerung mit Operand
JMP Const CALL Const JZ Const JNZ Const JC Const JNC Const JS Const JNS Const
Akku ohne Operand
NEG A NOT A INC A DEC A SHL A SHR A ROL A ROR A
Akku mit Operand
MOV A, Const ADD A, Const SUB A, Const SBC A, Const ADC A, Const AND A, Const OR A, Const XOR A, Const CMP A, Const MOV [Const],A MOV A,[Const]
Akku und Index
MOV A,X MOV A,[X] MOV X, A MOV [X], A MOV X, Const MOV X,[X] MOV X,[A] MOV [Const],X MOV X,[Const] DEC X INC X ADD A,X SUB A,X ADC A,X SBC A,X CMPZ X CMP A,X CMPZ A
Stack
PUSH A POP A PUSH X POP X DEC SP INC SP
Mikroprogramm

Das Mikroprogramm kann jederzeit editiert werden. Beachten Sie, dass die letzten 4 Zyklen in der Regel genutzt werden, um den nächsten Befehl (OpCode) zu laden. Sollten Sie diese Befehlsfolge verändern, kann es zu einer Blockierung der CPU führen.
Zum Editieren wählen Sie den entsprechenden Maschinenbefehl aus. Im Anschluss werden Ihnen die 8 möglichen Programmschritte aufgelistet. Jeder Schritt kann editiert werden. Der Knopf Show zeigt ihnen die im Befehl aktiven Leitungen (Show sollte nicht bei laufender CPU durchgeführt werden). Zur Vereinfachung der Mikroprogrammierung gelten folgende Konventionen:
- Sn (signal): Schaltet die Signalleitung n [0..25], z.B. S0 zur Übernahme des OpCodes.
- Zn (zero): Schaltet die Signalleitung bei aktivem Zero-Flag, z.B. Z2 zur Übernahme des PCs
- Un (unqual): Schaltet die Signalleitung bei inaktivem Zero-Flag
- Cn (carry): Schaltet die Signalleitung bei aktivem Carry-Flag
- In (inside): Schaltet die Signalleitung bei inaktivem Carry-Flag
- Nn (negativ): Schaltet die Signalleitung bei aktivem Sign-Flag
- Pn (positiv): Schaltet die Signalleitung bei inaktivem Sign-Flag
Signale werden mit Semikolon getrennt. Fehlerhafte Signale werden ignoriert.
Ein Speichern des Maschinen- bzw. Mikroprogramms ist derzeit leider nicht möglich.
[1] D. Pawelczak: Start in die Technische Informatik, Aachen: Shaker Verlag 2008