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