Dokumentation

Mikroprogrammierung-Projekt 2.20 - Gruppe 4
Befehlsübergabe
Benutzerdokumentation der Maschinenbefehle
add RA,RB
bmove RB
cmp RA,RB
jmpc RA
move imm,RB
Implementierung im Mikroprogrammspeicher
Test von bmove - Maschinenprogramm
 
Navigation: Projekthauptseite

Befehlsübergabe

Maschinenbefehle werden in einer Speicherzelle des Hauptspeichers, durch ihren Opcode angesprochen.
Die Syntax ist in folgenderweise festgelegt:
OPrr
OP steht für den hexadezimalen Wert des Opcodes
r  steht für den hexadezimalen Wert des Maschinenregisters, das im RA bzw. RB-Adreßfeld übergeben wird.
OPrr iiii
iiii bezeichnet den Wert, der im Konstantenfeld gespeichert wird.
Dieser steht in der Speicherstelle, die dirket auf den Befehl folgt.

Beispiel
10rr      steht für einen Befehl mit Opcode 10, der auf zwei Register zugreift.
11-r      steht für einen Befehl mit Opcode 11, der nur auf ein Register im RB-Adreßfeld zugreift.
12r-      steht für einen Befehl mit Opcode 12, der nur auf ein Register im RA-Adreßfeld zugreift.
13-- iiii steht für einen Befehl mit Opcode 13, der einen Wert aus dem Konstantenfeld ausliest.
Anfang

Benutzerdokumentation der Maschinenbefehle

add RA,RB

add - Additionsbefehl


Maschinenbefehl Opcode Syntax benötigte Takte
add RA,RB 0C 0Crr 1
Mit dem Befehl add können 16-Bit-Operanden addiert werden.
add addiert den Quelloperanden zu dem Zieloperanden und legt das Ergebnis im Zieloperanden ab. Symbolisch kann das so dargestellt werden:
Ziel = Ziel + Quelle
add RA,RB addiert die 16-Bit-Werte aus den Registern, die im RA-Adreßfeld und RB-Adreßfeld übergeben werden.

Der Befehl:
0C01
addiert beispielsweise die Inhalte von Register R0 mit R1 und übergibt das Ergebnis in R1.

Der Befehl add beeinflußt die vier Maschinenstatusregister:
Diese Kennzeichen können von anderen Maschinenbefehlen überprüft werden. (siehe jmpc)
Anfang

bmove RB

bmove - Blocktransport


Maschinenbefehl Opcode Syntax benötigte Takte
bmove RB F1 F1-r (7*n)+1
n Kopieroperationen
Der Befehl bmove dient zum Kopieren größerer Speicherblöcke.
Beim Aufruf muß das R0 Register die Adresse des zu kopierenden Speicherblocks enthalten, und R1 die Zieladresse.
Dies kann beispielsweise mit dem Befehl move imm,RB bewerkstelligt werden.
Das mit dem Befehlsopcode übergebene Register im RB-Adreßfeld enthält die Länge des zu kopierenden Speicherblocks.

Beachte:
Wird für die Länge der Wert 0 angegeben, so werden 10000h oder 65536d Speicherwörter kopiert.

Zur Demonstration des Befehls bmove RB wurde ein Maschinenprogramm geschrieben, das zusätzlich vor der Ausführung überprüft, ob sich Quell- und Zielbereich der zu kopierenden Speicherblöcke unzulässig überlappen.
Anfang

cmp RA,RB

cmp - Ziel mit Quelle vergleichen (Compare)


Maschinenbefehl Opcode Syntax benötigte Takte
cmp RA,RB 34 34rr 1
Der Befehl cmp subtrahiert den 16-Bit Quelloperanden vom Zieloperanden und setzt die Maschinenstatusflags entsprechend dem Ergebnis. Dabei wird das Ergebnis jedoch nicht gespeichert. Das bedeutet cmp verändert die Operanden nicht.
cmp wird hauptsächlich eingesetzt, um Maschinenstatusflags für die Entscheidung der bedingten Sprungbefehle zu setzen, d.h. die Programmausführung wird z.B an einer anderen Speicherstelle fortgesetzt, wenn zwei Zahlen gleich sind. (siehe jmpc)

cmp RA,RB vergleicht die Inhalte der beiden Register, die im RA-Adreßfeld und RB-Adreßfeld übergeben werden.

Der Befehl:
3401
subtrahiert beispielsweise den Inhalt von Register R0 von R1 und setzt die Maschinenstatusflags entsprechend dem Ergebnis.

Ergebnis des cmp-Befehls
Nicht vorzeichenbehaftete Zahlen
Bedingung Movr Mz Mz Mc
Quelle < Ziel OB OB 0 0
Quelle = Ziel OB OB 1 0
Quelle > Ziel OB OB 1 1
Zweierkomplementzahlen
Quelle < Ziel 0/1 0 0 OB
Quelle = Ziel 0 0 1 OB
Quelle > Ziel 0/1 1 0 OB
OB bedeutet ohne Bedeutung; 0/1 bedeutet, das Kennzeichen kann 0 oder 1 sein, je nachdem welchen Wert die Operanden haben.
Anfang

jmpc RA

jmpc - Bedingter Sprungbefehl (jump on carry)


Maschinenbefehl Opcode Syntax benötigte Takte
jmpc RA 8A 8Ar- 1, wenn Carry=0
2, wenn Carry=1
Der Befehl jmpc stellt einen bedingten Sprungbefehl dar.
Aufgrund von festgesetzten Bedingungen, die über die Maschinenstatusflags abgefragt werden, wird eine "Entscheidung" getroffen.
Wenn die Bedingung erfüllt ist, wird der Sprung ausgeführt, ansonsten mit dem nächsten Befehl im Programm fortgesetzt.
jmpc RA prüft den Zustand des Carry-Flags (Mc). Ist Mc gesetzt, so wird die Speicherzelle angesprungen, die im RA-Adreßfeld übergebenen Register angegeben ist. Ist Mc nicht gesetzt wird mit der Programmausführung an der nächsten Speicherzelle fortgefahren.

Der Befehl:
8A10   mit R1=000A
überprüft das Carry-Flag (Mc), ist es gesetzt, wird der Befehlszähler mit dem Wert des R1-Registers geladen, das Programm also an der Speicherzelle 000A fortgesetzt.

Anfang

move imm,RB

move - Übertragen


Maschinenbefehl Opcode Syntax benötigte Takte
move imm,RB 10 10-r iiii 2
Der Befehl move überträgt ein Datenwort.
In der angegebenen Adressierungsart move imm,RB ist dies ein unmittelbarer Wert, der in das durch RB adressierte Register geschrieben wird.
Das RA-Adreßfeld hat keine Bedeutung.

Der Befehl:
1001 000A
schreibt beispielsweise den Wert 0Ah in das Register R1.
Das RA-Adreßfeld, wurde willkürlich auf 0 gesetzt, da es nicht verwendet wird.
Der Wert 000A steht in der Speicherzelle, die direkt auf die Speicherzelle folgt, in der der Befehl 1001 steht.

Anfang

Implementierung im Mikroprogrammspeicher

Alle oben aufgeführten Maschinenbefehle wurden im Mikroprogrammspeicher des Simulators mic implementiert.
Die daraus resultierenden Belegungen der Felder der Mikroinstruktion sind hier zu finden.
Ebenfalls abgebildet ist das Mikroprogramm I-Fetch, das für das Laden des nächsten Maschinenbefehls in das Instruktionsregister zuständig ist, den Befehlszähler inkrementiert, und das zu dem Maschinenbefehl gehörige Mikroprogramm anspringt.
Anfang

Test von bmove - Maschinenprogramm

Die implementierten Maschinenbefehle wurden auf ihre Richtigkeit überprüft.
Für den Befehl bmove wurde zusätzlich ein Maschinenprogramm geschrieben, das vor dem Kopieren der Speicherblöcke überprüft, ob sich Ziel- und Quellbereich unzulässig überlappen.
Dabei werden vier Möglichkeiten unterschieden.
Das Maschinenprogramm kann ebenfalls im Simulator mic ausgeführt werden. Die notwendigen Dateien stehen zum Herunterladen zur Verfügung.
Anfang


zu den TGI-SeitenZu den TGI-Seiten der TUM

14.07.98