Technische Universität München, Fakultät für Informatik
Aktion | Einheit | Einstellungen | Ausführung |
Das durch RB bezeichnete Register in die ALU laden. | Am2901 | SRC=ZB FUNC=ADD BSEL=IR |
1. Takt |
Rechts-Shift in der ALU durchführen. | Am2901 Am2904 |
DEST=RAMD Schiebesteuerung=RSC0NI |
1. Takt |
Flags im Maschinenstatusregister entsprechend setzen. | Am2904 | CEM=L SR-Test=LDMASR |
1. Takt |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehle=CJP Direkt-Daten=IFE |
1. Takt |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
Befehls-Zähler auf dem Adreßbus ausgeben. | Befehls-Zähler | BZ_EA=E | 1. Takt |
Konstantenfeld über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=DZ FUNC=ADD ABUS=AB |
2. Takt |
Daten vom Datenbus in die ALU laden (direkte Adressierung ). | Am2901 | SRC=DZ FUNC=ADD |
3. Takt |
Rechts-Shift durchführen und in R10 Ergebnis zwischenspeichern. | Am2901 Am2910 |
DEST=RAMD RB-Addr=R10 BSEL=MR Schiebesteuerung=RSC0NI |
3. Takt |
Flags im Maschinenstatusregister entsprechend setzen. | Am2904 | CEM=L SR-Test=LDMASR |
3. Takt |
Befehls-Zähler auf dem Adreßbus ausgeben. | Befehls-Zähler | BZ_EA=E | 3. Takt |
Konstantenfeld über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=DZ FUNC=ADD ABUS=AB |
4. Takt |
Hauptspeicher für Schreibzugriffe konfigurieren. | Hauptspeicher | MEW=W | 5. Takt |
R10 über ALU auf dem Datenbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD RB-Addr=R10 BSEL=MR DBUS=DB |
5. Takt |
Befehls-Zähler inkrementieren (Befehl ist zwei Byte lang). | Befehls-Zähler | BZ_INC=I | 6. Takt |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
6. Takt |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
RB-Register über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD BSEL=IR ABUS=AB |
1. Takt |
Rechts-Shift durchführen und in R10 Ergebnis zwischenspeichern. | Am2901 Am2904 |
SRC=DZ FUNC=ADD RB-Addr=R10 BSEL=MR DEST=RAMD Schiebesteuerung=RSC0NI |
2. Takt |
Flags im Maschinenstatusregister entsprechend setzen. | Am2904 | CEM=L SR-Test=LDMASR |
2. Takt |
RB-Register über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD BSEL=IR ABUS=AB |
3. Takt |
Hauptspeicher für Schreibzugriffe konfigurieren. | Hauptspeicher | MEW=W | 4. Takt |
R10 über ALU auf dem Datenbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD RB-Addr=R10 BSEL=MR DBUS=DB |
4. Takt |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
5. Takt |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
Befehls-Zähler auf dem Adreßbus ausgeben. | Befehls-Zähler | BZ_EA=E | 1. Takt |
"disp" aus dem Datenbus über ALU in R10 zwischenspeichern. | Am2901 | SRC=DZ FUNC=ADD DEST=RAMF RB-Addr=R10 BSEL=MR |
2. Takt |
R10 und RB in der ALU addieren und auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=AB FUNC=ADD RA-Addr=R10 ASEL=MR BSEL=IR ABUS=AB |
3. Takt |
Rechts-Shift durchführen und Ergebnis in R11 zwischenspeichern. | Am2901 Am2904 |
SRC=DZ FUNC=ADD DEST=RAMD RB-Addr=R11 BSEL=MR Schiebesteuerung=RSC0NI |
4. Takt |
Flags im Maschinenstatusregister entsprechend setzen. | Am2904 | CEM=L SR-Test=LDMASR |
4. Takt |
R10 und RB in der ALU addieren und auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=AB FUNC=ADD RA-Addr=R10 ASEL=MR BSEL=IR ABUS=AB |
5. Takt |
Hauptspeicher für Schreibzugriffe konfigurieren. | Hauptspeicher | MEW=W | 6. Takt |
R11 über ALU auf dem Datenbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD RB-Addr=R11 BSEL=MR DBUS=DB |
6. Takt |
Befehls-Zähler inkrementieren (Befehl ist zwei Byte lang). | Befehls-Zähler | BZ_INC=I | 7. Takt |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
7. Takt |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
RA MOD 16 in der ALU berechnen. | KMUX Am2901 |
KMUX=K Konstante=15 SRC=DA FUNC=AND ASEL=IR |
1. Takt |
Ergebnis nach R10 laden (Schleifen-Zähler). | Am2901 | DEST=RAMF RB-Addr=R10 BSEL=IR |
1. Takt |
Flags im Mikrostatusregister entsprechend setzen. | Am2904 | CEMUE=L SR-Test=LDMISR |
1. Takt |
Zero-Flag im Mikrostatusregister prüfen. | Am2904 | SR-Test=MI ZERO | 2. Takt |
Falls R10=0 (Zero=1) wird das Mikroprogramm verlassen (->IFE). | Am2910 | CCEN=C Am2910-Befehl=CJP Direktdaten=IFE |
2. Takt |
In der ALU Rechts-Shift auf RB durchführen. (Adresse dieser Instruktion ist "C22") | Am2901 Am2904 |
SRC=ZB FUNC=ADD DEST=RAMD BSEL=IR Schiebesteuerung=RSC0NI |
3. Takt |
Flags im Maschinenstatusregister entsprechend setzen. | Am2904 | CEM=L SR-Test=LDMASR |
3. Takt |
In der ALU auf R10 die Konstante "1" subtrahieren (R10=R10-1). | KMUX Am2901 CIN-MUX |
KMUX=K Konstante=1 SRC=DA FUNC=SUBR DEST=RAMF RA-Addr=R10 ASEL=MR RB-Addr=R10 BSEL=MR CIN-MUX=CI1 |
4. Takt |
Flags im Mikrostatusregister entsprechend setzen. | Am2904 | CEMUE=L SR-Test=LDMISR |
4. Takt |
Zero-Flag im Mikrostatusregister prüfen. | Am2904 | SR-Test=MI NOT_ZERO | 5. Takt |
Bei nicht gesetztem Zero-Flag wird zu "C22" gesprungen (siehe oben). | Am2910 | CCEN=C Am2910-Befehl=CJP Direktdaten=C22 |
5. Takt |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
6. Takt |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
$000F in R10 laden (Vorbereitung für "imm MOD 16"). | KMUX Am2901 |
KMUX=K Konstante=15 SRC=DZ FUNC=ADD DEST=RAMF RB-Addr=R10 BSEL=MR |
1. Takt |
Befehls-Zähler auf dem Adreßbus ausgeben. | Befehls-Zähler | BZ_EA=E | 1. Takt |
Daten AND R10 über ALU in R10 laden (Schleifen-Zähler). | Am2901 | SRC=DA FUNC=AND DEST=RAMF RA-Addr=R10 ASEL=MR RB-Addr=R10 BSEL=MR |
2. Takt |
Flags im Mikrostatusregister entsprechend setzen. | Am2904 | CEMUE=L SR-Test=LDMISR |
2. Takt |
Zero-Flag im Mikrostatusregister prüfen. | Am2904 | SR-Test=MI ZERO | 3. Takt |
Falls R10=0 (Zero=1) wird zu C36 gesprungen (Programm-Ende). | Am2910 | CCEN=C Am2910-Befehl=CJP Direktdaten=C36 |
3. Takt |
In der ALU Rechts-Shift auf RB durchführen (Adresse dieser Instruktion ist "C33"). | Am2901 Am2904 |
SRC=ZB FUNC=ADD DEST=RAMD BSEL=IR Schiebesteuerung=RSC0NI |
4. Takt |
Flags im Maschinenstatusregister entsprechend setzen. | Am2904 | CEM=L SR-Test=LDMASR |
4. Takt |
In der ALU auf R10 die Konstante "1" subtrahieren (R10=R10-1). | KMUX Am2901 CIN-MUX |
KMUX=K Konstante=1 SRC=DA FUNC=SUBR DEST=RAMF RA-Addr=R10 ASEL=MR RB-Addr=R10 BSEL=MR CIN-MUX=CI1 |
5. Takt |
Flags im Mikrostatusregister entsprechend setzen. | Am2904 | CEMUE=L SR-Test=LDMISR |
5. Takt |
Zero-Flag im Mikrostatusregister prüfen. | Am2904 | SR-Test=MI NOT_ZERO | 6. Takt |
Bei nicht gesetztem Zero-Flag wird zu C33 gesprungen (siehe oben). | Am2910 | CCEN=C Am2910-Befehl=CJP Direktdaten=C33 |
6. Takt |
Befehls-Zähler inkrementieren (Befehl ist zwei Byte lang). | Befehls-Zähler | BZ_INC=I | 7. Takt |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
7. Takt |
Querverweis: Spezifikation, Mikroinstruktionstabelle
zurück zum Inhalt Projekt II.11