2.2.4.4 Registerindirekte Adressierung

Bei der registerindirekten Adressierung bezeichnet der Operand ein Register auf der CPU, der in diesem Register abgelegte Wert bezeichnet die effektive Adresse der Speicherzelle.

Handelt es sich um ein 32-Bit-Register, so stehen damit auch 32 Bit für die Adressierung einer Speicherzelle im Hauptspeicher zur Verfügung. Bei einem 64-Bit-Register entsprechend 64 Bit.

Aus Aufgabe 1 der Seite Aufgaben & Co. zum Befehlsformat ist bereits die Schreibweise

ADD ACC, ACC, 14

bekannt. Hier erfolgt zweimal die Registeradressierung des Akkumulator. Um jetzt eine registerindirekte Adressierung anzuzeigen, wird die Schreibweise verändert:

ADD ACC, (ACC), 14

Die hier eingeführten Klammern um das bezeichnete Register zeigen die Verwendung der registerindirekten Adressierung an.

Die Bedeutung dieses Befehls ist damit: Addiere den Wert der Speicherzelle im Hauptspeicher, die durch den im Register (ACC) gespeicherten Wert addressiert wird, und den in Speicherzelle 14 gespeicherten Wert. Das Ergebnis schreibe in den Akkumulator.

Falls also im Akkumulator der Wert 80 gespeichert ist, so wird auf Speicherzelle 80 zugegriffen. Zu deren Wert wird der in Speicherstelle 14 hinterlegte Wert addiert und das Ergebnis in den Akkumulator geschrieben.


Aufgabe 1

Aufgabe

Welche Bedeutungen haben die folgenden Befehle:

  • ADD R1, ACC, 8
  • SUB ACC, 10, (R2)
  • JUMP (R3)
  • ADD ACC, (ACC), #5

Diskutiere die Bedeutungen in deiner Lerngruppe!

(R1, R2 und R3 bezeichnen Register auf der CPU, siehe Gesamtbild eines Von-Neumann-Rechners.)