18.12.2012 Aufrufe

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 - 17 - Prof. Dipl.-Ing. Komar<br />

7.1.7 Befehlssatz des 8086<br />

Adressierungsarten<br />

Die INTEL 80x86-Familie weist sechs Adressierungsarten auf. Bei Zwei-Operand-Befehlen ist ein Operand<br />

in der Regel ein Register. Der zweite bestimmt die Adressierungsart. Bei Ein-Operand-Befehlen bestimmt der<br />

Operand die Adressierungsart.<br />

Registeradressierung<br />

Alle Operanden stehen in Registern. Der Maschinencode ist kompakt und besonders schnell ausführbar.<br />

ADD CX,DX INC CX<br />

SUB AL,CH MUL BX<br />

Unmittelbare Adressierung<br />

Der Quelloperand ist eine Konstante. Es sind damit nur Zwei-Operand-Befehle möglich, wobei der erste<br />

Zieloperand ein Register oder eine Speicheradresse sein kann.<br />

ADD BL, A4 MOV AH,34 MOV AX,DDDD SUB WORD PTR [1000], 12AD<br />

Direkte Adressierung<br />

Ein Operand ist eine Speicheradresse. Diese wird in eckige Klammern [ ] gesetzt ( Syntax DEBUG-Assembler )<br />

MOV AX, [1000] ADD [AF00], DX SUB [2000], BL AND BYTE PTR [1000], FF<br />

Unzulässig ist folgender Befehl : MOV [1000] , [2000] weil Speicher zu Speicher - Zuweisung<br />

Indirekte Adressierung<br />

Der Operand ist ein Speicherplatz, der indirekt über bestimmte Register angesprochen wird.<br />

Form: Opcode Register, [Indexregister] oder Opcode [Indexregister], Register<br />

Als Indexregister dürfen nur SI, DI, BP und BX verwendet werden.<br />

MOV AX, [ SI ] ADD DX, [ BX ] AND [ DI ],CL<br />

Auch registerindirekte Sprünge sind möglich. Hier sind alle Register zulässig<br />

JMP AX springe zur Speicheradresse die gebildet wird aus CS : AX-Inhalt<br />

CALL DI Unterprogrammverzweigung zu der Adresse aus CS und Offset im DI-Register<br />

Basisregister plus Displacement<br />

Das Indexregister plus einer konstanten Verschiebung (displacement ) zeigt auf die Adresse im Speicher.<br />

MOV CX,[ BX + 4 ] Der Inhalt der beiden Byte mit den Adressen ( DS : BX-Inhalt + 4 ) und<br />

( DS : BX-Inhalt + 5 ) wird nach CX kopiert<br />

ADD AX, [ SI + 100 ] Der Inhalt des Wortes, dessen Adresse aus DS : [SI] + 100 h gebildet wird,<br />

wird zu AX hinzuaddiert<br />

MOV [ 6 + DI ] , BL Der Inhalt von BL wird in die Speicher-Adresse ES : [ DI ] + 6 kopiert<br />

Basisregister plus Indexregister plus Displacement<br />

Angesprochen wird die Speicheradresse, auf die das erste Indexregister plus dem Inhalt des zweiten Index-<br />

registers plus einer konstanten Verschiebung (displacement ) zeigt<br />

MOV CL, [ BP+DI+100 ] Speicheradresse SS : [ BP ] + [ DI ] + 100<br />

MOV [ BX ] [ DI ], AX Speicheradresse DS : [ BX ] + [ DI ] (z.B. Matrizenop. BX-> Zeile, DI->Spalte )

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!