6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Rechnergrundlagen Teil 2 - 64 - Prof. Dipl.-Ing. Komar<br />
FyyyR mem ST = Speicheroperand ( SHORT oder LONG REAL ) – | / ST<br />
FIyyyR mem ST = Speicheroperand ( WORD oder SHORT INTEGER ) – | / ST<br />
FyyyR ST,ST(i) ST = Stapeloperand i – | / Stapelspitze ST<br />
FyyyR ST(i),ST ST(i) = Stapelspitze ST – | / Stapeloperand ST(i)<br />
FyyyRP ST(i),ST ST(i) = Stapelspitze ST – | / ST(i) und POP: ST geht verloren<br />
FyyyR ST(1) = Stapelspitze ST – | / ST(1) und POP: Ergebnis in ST<br />
yyy => SUB – oder DIV / ; R bewirkt Vertauschung der Operandenreihenfolge<br />
Beispiele:<br />
FIADD WORD PTR[BX] ; ST = ST + 2-Byte-Integerwert in DS:BX<br />
FDIV DWORD PTR [0200] ; ST = ST/ 4-Byte-Realwert in DS:200<br />
Vergleichsbefehle<br />
Die Vergleichsbefehle bilden eine Testsubtraktion zwischen dem obersten Stapelregister ST = ST(0) und einer<br />
Speicherstelle oder einem anderen Stapelregister, wobei die beiden Operanden nicht verändert werden sondern<br />
nur die beiden Bedingungsbits C3 und C0 des FPU-Statusregisters entsprechend dem Ergebnis gesetzt oder<br />
gelöscht werden.<br />
Da die FPU keine eigenen bedingten Sprungbefehle hat, müssen die Bedingungsbits in das Statusregister der<br />
CPU gebracht und dort durch die bedingten Sprünge der CPU ausgewertet werden.<br />
Die FPU-Bedingungsbits C3 und C0 werden in die Bedingungsbits Z (Zero) und C (Carry) des CPU-Statusregisters<br />
kopiert und es kann mit den bedingten Sprungbefehlen JA, JAE, JE, JNE, JBE und JB verzweigt<br />
werden.<br />
FCOM mem Differenz ST – Speicheroperand ( SHORT oder LONG REAL )<br />
FICOM mem Differenz ST – Speicheroperand ( WORD oder SHORT INTEGER )<br />
FCOM ST(i) Differenz ST – Stapeloperand i<br />
FCOM Differenz ST – Stapeloperand ST(1)<br />
FCOMP mem Differenz ST – Speicheroperand und POP ( POP löscht Operanden der Stapelspitze)<br />
FICOMP mem Differenz ST – Speicheroperand und POP "<br />
FCOMP ST(i) Differenz ST – Stapeloperand i und POP, ST geht verloren<br />
FCOMPP Differenz ST – ST(1) und POP und POP, beide Operanden gehen verloren<br />
FTST Differenz ST – 0.0: verändert Bedingungsbit C3 und C0<br />
FXAM Untersuche Operanden in Stapelspitze ST ( C3, C2, C1, C0 )<br />
Die Bedungungsbit C3 C0 zeigen das Vergleichsergebnis<br />
0 0 ST > 2. Operand<br />
0 1 ST < 2. Operand<br />
1 0 ST = 2. Operand<br />
1 1 nicht möglich<br />
Beispiele:<br />
FCOM ; Vergleiche ST mit ST(1)<br />
FCOM ST(5) ; Vergleiche ST mit ST(5)<br />
FCOM DWORD PTR[0200] ; Vergleiche ST mit 4-Byte-Realwert in DS:200<br />
Beispiel für Auswertung der Bedingungsbit im Bedingungscodefeld des FPU-Statuswortes mit 80x86-Befehlen<br />
FCOMxx op ; beliebiger Vergleichsbefehl<br />
FSTSW [0200] ; FPU-Statusregisterinhalt in den Arbeitsspeicher nach DS:200<br />
MOV AX,[200] ; AX mit FPU-Statusregisterinhalt laden<br />
SAHF ; speichere AH in das Bedingungsregister, dem Low-Teil des Statusregisters<br />
Jxx ziel ; Auswertung der Bedingungsbits durch bedingte Sprungbefehle