MPR Projekt 9 - Pflichtenheft

 

Gliederung

  1. Implementierung der Befehle
  2. Zu realisierende Befehle
    1. Der MOVE-Befehl
    2. Der DEC-Befehl
    3. Der CMP-Befehl
    4. Der SCF-Befehl
    5. Der RLC-Befehl
    6. Der JMPNC-Befehl
    7. Das BSCANF-Programm
  3. Testverfahren
  4. Arbeitschritte


Projektüberblick MPR Frames anzeigen
Zurück zur Homepage

Beschreibung der Zielarchitektur

Aufbau der Zielarchitektur

Bei der Zielarchitektur handelt eine reine 16-Bit Architektur. Als Register stehen zur Verfügung:

Befehlszähler: Der Befehlszähler adressiert den als nächstes auszuführenden Befehl. Er wird automatisch nach jedem Befehl auf den im Speicher unmittelbar folgenden Befehl fortgeschaltet. Sprung- und Unterprogrammbefehle können den Befehlszähler direkt setzen.
8 Allzweckregister: Die acht Allzweckregister (r0 - r7) können beliebige 16 Bit Werte aufnehmen.
Kellerzeiger (SP): Zeigt auf den zuletzt gekellerten Wert.

Statusinformationen werden von der ALU im Maschinenstatusregister abgelegt. Folgende Flags stehen zur Verfügung:

OVR Overflow - Flag
N Negative - Flag
Z Zero - Flag
C Carry - Flag

Der Hauptspeicher umfaßt einen Adreßraum von 64K Worten a 16 Bit.

Befehlsformate des Rechners

Von der Zielarchitektur wird durchgehend ein Zweiadreß-Befehlsformat benutzt. Je nach Verwendung der Adressierungsarten im Befehl, ergeben sich Einwort- bzw. Zweiwort-Befehle. Im Feld Opcode ist der 8-Bit Operationscode des Befehls enthalten, in dem auch die verwendeten Adressierungsarten codiert sind.

Einwort-Befehle:

15 ........... 8 7 6 ... 4 3 2 ... 0
Opcode 0 RA 0 RB

Zweiwort-Befehle:

15 ........... 8 7 6 ... 4 3 2 ... 0   15 ....................................... 0
Opcode 0 RA 0 RB   Konstantenfeld

Der Befehlssatz der Zielarchitektur ist weitgehend orthogonal, d.h. im allgemeinen kann bei jedem Befehl jede beliebige, sinnvolle Kombination von Adressierungsarten verwendet werden. Ausnahmen sind die Kombination von Speicher- und unmittelbarer Adressierung, die durch das verwendete Befehlsformat ausgeschlossen wird, sowie einige spezielle Befehle. Es werden insgesamt fünf verschiedene Adressierungsarten für Operanden unterstützt. Die drei von den zu implementierenden Befehlen verwendeten Kombinationen sind im folgenden kurz aufgeführt:

IMM, RB:

Unmittelbar adressierter Quelloperand bzw. Registeradressierung

Der Quelloperand ist direkt im Konstantenfeld des Zweiwortbefehles angegeben. Der Zieloperand befindet sich in einem Pozessorregister, dessen Nummer im Feld RB enthalten ist. RB kann die hexadezimalen Werte von 0 bis 7 annehmen.

RB:

Registeradressierung

Der Quell- und Zieloperand sind identisch. Der Quelloperand befindet sich in einem Pozessorregister, dessen Nummer im Feld RB enthalten ist. RB kann die hexadezimalen Werte von 0 bis 7 annehmen.

IMM:

Unmittelbare Adressierung

Der Operand ist direkt im Konstantenfeld des Zweiwortbefehles angegeben.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

Zu implementierende Befehle



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

MOVE - Datentransport

Operanden & Opcode:

src dst OpCode
IMM RB F4

Funktion: dst := src

Bescreibung: Der Befehl MOVE IMM, RB kopiert eine 16-Bit-Zahl aus dem Konstantenfeld des Zweiwortbefehls in das Register, das in RB angegeben ist.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

DEC - Herunterzählen um 1

Operanden & Opcode:

src dst OpCode
RB 44

Funktion: dst := dst - 1

Beschreibung: Der Befehl DEC RB zählt die 16-Bit-Zahl, die sich in dem Register befindet, welches durch RB angegeben ist um 1 herunter. Die Statusbits im Maschinenstatusregister werden dabei nicht verändert.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

CMP - Arithmetischer Vergleich

Operanden & Opcode:

src dst OpCode
IMM RB 30

Funktion: dst - src

Beschreibung: Der Befehl CMP IMM, RB subtrahiert die 16-Bit-Zahl aus dem Konstantenfeld des Zweiwortbefehles von der 16-Bit-Zahl aus dem Register, das in RB angegeben ist, und setzt entsprechend der nachfolgenden Spezifikation die Statusbits im MSR. Das Ergebnis wird anschließend verworfen, der Wert des Registers wird also nicht verändert.

Carry = 1, wenn der Wert des Konstantenfeldes größer ist als der Wert des Registers, das in RB adressiert ist (bei der Interpretation als vorzeichenlose Zahlen)

Zero = 1, wenn das Ergebnis gleich Null ist, also der Wert des Konstantenfeldes gleich dem Wert des Registers ist, das in RB adressiert ist.

N = dem 15. Bit des Ergebnisses. Also das Vorzeichen, 1 für Zahlen kleiner als Null, wenn die Zahlen als Vorzeichenbehaftet interpretiert werden.

OVR = 1, wenn der Übertrag in das 15. Bit ungleich dem Übertrag aus dem 15. Bit ist, also der Überlauf.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

SCF - Setzen des Carry-Flags

Operanden & Opcode:

src dst OpCode
F5

Funktion: Carry-Flag := 1

Beschreibung: Der Befehl scf setzt im Maschinenstatusregister das Carry - Flag auf 1.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

SCF - Rotieren nach links über Carry-Flag

Operanden & Opcode:

src dst OpCode
RB 64

Funktion: dst := dst um ein Bit nach links über das Carry Flag rotiert.

Beschreibung: Der Befehl RLC RB rotiert den Inhalt des Registers, das in RB angegeben ist um eine Bitposition nach links, wobei das Carry - Flag mit einbezogen wird. Es wird also der Inhalt von Bit 15 in das Carry - Flag geschrieben, der Inhalt vom Carry-Flag ins Bit 0, und der Inhalt des i-ten Bits in das Bit i+1.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

JMPNC - Bedingter Sprung

Operanden & Opcode:

src dst OpCode
IMM 8D

Funktion: Falls nc (no carry): PC := src

Beschreibung: Der Befehl JMPNC prüft das Carry - Flag im Maschinenstatusregister. Falls das Carry - Flag nicht gesetzt ist, wird die Befehlsausführung mit dem Befehl fortgeführt, dessen Adresse im Konstantenfeld des Zweiwortbefehls angegeben ist. Der Befehlszähler wird also mit dem Inhalt des Konstantenfeldes geladen. Ist das Carry - Flag nicht gesetzt, so wird die Befehlsausführung mit dem nächsten Befehl fortgesetzt.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

BSCANF - Bit-Suche vorwärts

Beschreibung: Der Befehl BSCANF sucht im Quelloperanden nach der am weitesten links stehenden (höchstwertigen) binären 1 und schreibt deren Bitposition in den Zieloperanden. Enthält der Quelloperand keine binäre 1, ist er also gleich Null, so wird der Zieloperand auf den Wert -1 gesetzt.

Dieser Befehl ist mittels eines Maschinenprogrammes, welches nur die vorstehenden Befehle verwendet zu implementieren.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

Testverfahren

Die Implementierung der Befehle erfolgt unter der Simulationsmaschine MIC, Version 5.2. Die implementierten Befehle sollen auf Geschwindigkeit und korrekte Funktion überprüft werden.



Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

Arbeitsschritte

  1. Erstellung eines Pflichtenheftes, sowie der Spezifikation der Aufgabe.
  2. Das Projektteam muß sich mit der Mikroprogrammierumgebung vertraut machen.
  3. Die Implementierung des Programms umfaßt:
  4. Die Programme müssen ausreichend getestet und von Fehlern befreit werden, so daß sie korrekt arbeiteten und die gewünschten Aufgaben möglichst effizient erfüllen.
  5. Es ist eine Dokumentation zu erstellen, die den Verlauf, sowie das Ergebnis des Projektes detailliert darlegt.
  6. Zum gesamten Projekt ist ein Vortrag vorzubereiten, der von einem Mitglied der Gruppe gehalten wird.


Projektüberblick MPR Frames anzeigen Zum Seitenanfang
Zurück zur Homepage