Technische Universität München, Fakultät für Informatik
Da die Maschine ein 16-Bit Wort nur um eine Stelle verschieben kann,
wird die Erstellung
der benötigten Bitmaske über eine Schleife impementiert. Die
Bitmaske wird bei allen Adressierungen über RA gebildet und in R11
abgelegt.
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. MIR |
Ergebnis in R10 speichern (Schleifen-Zähler). | Am2901 | DEST=RAMF RB-Addr=R10 BSEL=MR |
1. MIR |
Die Konstante 32768 (binär: 1000000000000000) in R11 laden. | K-MUX Am2901 |
K-MUX=K Konstante=32768 SRC=DZ FUNC=ADD DEST=RAMF RB-Addr=R11 BSEL=MR |
2. MIR |
Nächste Mikroinstruktionsadresse -> Stack (Schleife vorbereiten). | Am2910 | Am2910-Befehl=PUSH | 2.MIR |
Den Wert in R11 über die ALU links-rotieren. | Am2901 Am2904 |
SRC=ZB FUNC=ADD DEST=RAMU RB-Addr=R11 BSEL=MR Schiebesteuerung=LSR |
3. MIR |
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. MIR |
Flags im Mikrostatusregister entsprechend setzen. | Am2904 | CEMUE=L SR-Test=LDMISR |
4. MIR |
NEG-Flag im Mikrostatusregister prüfen. | Am2904 | SR-Test=MI NEG | 5. MIR |
Konditionierten LOOP-Befehl ausführen. | Am2910 | CCEN=C Am2910-Befehl=LOOP | 5. MIR |
Aktion | Einheit | Einstellungen | Ausführung |
Erstellung der Bitmaske in R11. | Bitmasken-Routine (siehe oben) |
R11=2(RA mod 16) | 1. - 5. MIR |
"R11 or RB" nach RB schreiben. | Am2901 | SRC=AB FUNC=OR DEST=RAMF RA-Addr=R11 ASEL=MR BSEL=IR |
6. MIR |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehle=CJP Direkt-Daten=IFE |
6. MIR |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
Erstellung der Bitmaske in R11. | Bitmasken-Routine (siehe oben) |
R11=2(RA mod 16) | 1. - 5. MIR |
Befehls-Zähler auf dem Adreßbus ausgeben. | Befehls-Zähler | BZ_EA=E | 5. MIR |
Konstantenfeld über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=DZ FUNC=ADD ABUS=AB |
6. MIR |
"R11 or Daten" nach R10 schreiben. | Am2901 | SRC=DA FUNC=OR DEST=RAMF RA-Addr=R11 ASEL=MR RB-Addr=R10 BSEL=MR |
7. MIR |
Befehls-Zähler auf dem Adreßbus ausgeben. | Befehls-Zähler | BZ_EA=E | 7. MIR |
Konstantenfeld über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=DZ FUNC=ADD ABUS=AB |
8. MIR |
Hauptspeicher für Schreibzugriffe konfigurieren. | Hauptspeicher | MEW=W | 9. MIR |
R10 über ALU auf dem Datenbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD RB-Addr=R10 BSEL=MR DBUS=DB |
9. MIR |
Befehls-Zähler inkrementieren (Befehl ist zwei Byte lang). | Befehls-Zähler | BZ_INC=I | 10. MIR |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
10. MIR |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
Erstellung der Bitmaske in R11. | Bitmasken-Routine (siehe oben) |
R11=2(RA mod 16) | 1. - 5. MIR |
RB-Register über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD BSEL=IR ABUS=AB |
6. MIR |
"R11 or Daten" nach R10 schreiben. | Am2901 | SRC=DA FUNC=OR DEST=RAMF RA-Addr=R11 ASEL=MR RB-Addr=R10 BSEL=MR |
7. MIR |
RB-Register über die ALU auf dem Adreßbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD BSEL=IR ABUS=AB |
8. MIR |
Hauptspeicher für Schreibzugriffe konfigurieren. | Hauptspeicher | MEW=W | 9. MIR |
R10 über ALU auf dem Datenbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD RB-Addr=R10 BSEL=MR DBUS=DB |
9. MIR |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
10. MIR |
Querverweis: Spezifikation, Mikroinstruktionstabelle
Aktion | Einheit | Einstellungen | Ausführung |
Erstellung der Bitmaske in R11. | Bitmasken-Routine (siehe oben) |
R11=2(RA mod 16) | 1. - 5. MIR |
Befehls-Zähler auf dem Adreßbus ausgeben. | Befehls-Zähler | BZ_EA=E | 5. MIR |
"disp" aus dem Datenbus über ALU in R10 zwischenspeichern. | Am2901 | SRC=DZ FUNC=ADD DEST=RAMF RB-Addr=R10 BSEL=MR |
6. MIR |
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 |
7. MR |
"R11 or Daten" nach R11 schreiben. | Am2901 | SRC=DA FUNC=OR DEST=RAMF RA-Addr=R11 ASEL=MR RB-Addr=R11 BSEL=MR |
8. MIR |
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 |
9. MIR |
Hauptspeicher für Schreibzugriffe konfigurieren. | Hauptspeicher | MEW=W | 10. MIR |
R11 über ALU auf dem Datenbus ausgeben. | Am2901 Y-MUX |
SRC=ZB FUNC=ADD RB-Addr=R11 BSEL=MR DBUS=DB |
10. MIR |
Befehls-Zähler inkrementieren (Befehl ist zwei Byte lang). | Befehls-Zähler | BZ_INC=I | 11. MIR |
Nächsten Maschinenbefehl durch IFE-Routine laden. | Am2910 | CCEN=PS Am2910-Befehl=CJP Direkt-Daten=IFE |
11. MIR |
Querverweis: Spezifikation, Mikroinstruktionstabelle
zurück zum Inhalt Projekt II.11