6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Rechnergrundlagen Teil 2 - 63 - Prof. Dipl.-Ing. Komar<br />
Beispiele in DEBUG-Assembler-Syntax:<br />
FILD QWORD PTR [0200] ; lade INTEGER LONG-Operanden aus Arbeitsspeicheradresse DS:0200<br />
FBSTP TBYTE PTR [BX] ; speichere Stapelspitze als BCD-PACKED-Operand nach DS:BX und POP<br />
FST DWORD PTR [220] ;speichere Stapelspitze als REAL SHORT-Operand nach Arbeitsspeicher-<br />
adresse DS:0220 (ohne POP)<br />
FSTP ST(0) ;POP-Operation ohne Datentransport<br />
FISTP QWORD PTR[SI] ; Stapelspitze ST(0) nach 8-Byte-Integer-Operand in DS:SI speichern und POP<br />
FST ST(4) ; ST(4) := ST (0)<br />
Arithmetische Befehle<br />
Die arithmetischen Befehle können nur auf die vier Normalformen (INTEGER WORD und – SHORT sowie<br />
REAL SHORT und –LONG ) sowie auf Operanden in den Stapelregistern angewendet werden.<br />
Aufbau der Befehlssymbolik:<br />
F I operation R P<br />
INTEGER ADD Rückwärts POP<br />
SUB den Stapel<br />
MUL<br />
DIV<br />
I kennzeichnet alle Befehle mit INTEGER-Operanden im Arbeitsspeicher.<br />
R bedeutet bei den Operationen Subtrahieren SUB und Dividieren DIV , daß die Reihenfolge der beiden<br />
Operanden vor der Operation zu vertauschen ist.<br />
P kennzeichnet eine Operation mit POP, bei der nach der Ausführung der Operation der Stapelzeiger erhöht und<br />
damit das oberste Stapelregister ST(0) freigegeben wird. ST(0) darf in diesem Fall nicht Zielregister für das<br />
Ergebnis sein, da dieses damit verloren gehen würde.<br />
Alle nicht besonders gekennzeichneten arithmetischen Befehle werden in der Reihenfolge<br />
1.Operand Funktion-(verknüpfung) mit 2.Operand = > 1.Operand<br />
ausgeführt, wobei das Ergebnis in den 1.Operanden geschrieben wird.<br />
Einer der beiden Operanden muß sich im obersten Stapelregister ST(0) befinden. Der andere Operand kann eine<br />
Speicherstelle oder ein anderes Stapelregister sein.<br />
FSUB ST, ST(1) ST(0) = ST(0) – ST(1)<br />
FSUBR ST,ST(1) ST(0) = ST(1) – ST(0)<br />
Befehle der vier Grundrechenarten<br />
Fxxx mem ST = ST + | – | * | / Speicheroperand ( SHORT oder LONG REAL )<br />
FIxxx mem ST = ST + | – | * | / Speicheroperand ( WORD oder SHORT INTEGER )<br />
Fxxx ST,ST(i) ST = ST + | – | * | / Stapeloperand i<br />
Fxxx ST(i),ST ST(i) = ST(i) + | – | * | / Stapelspitze ST<br />
FxxxP ST(i),ST ST(i) = ST(i) + | – | * | / Stapelspitze ST und POP: ST geht verloren<br />
Fxxx ST(1) = ST(1) + | – | * | / Stapelspitze ST und POP: Ergebnis in ST<br />
xxx => ADD + | SUB – | MUL * | DIV / |