18.12.2012 Aufrufe

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 / |

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!