Indizierte Adressierung mit Verschiebung

Unter der indizierten Adressierung mit Verschiebung versteht man eine Erweiterung der direkten/absoluten Adressierung. Dabei wird zu dem im Befehl angegebenen Operanden (Verschiebung) noch der Wert eines Registers hinzuaddiert. Die Summe entspricht dann der effektiven Adresse der anzusprechenden Speicherzelle.

Auch dazu ein Beispiel anhand der aus dem Video Vom Quellcode zum Prozessor bekannten Ausgangslage:

Man nehme den Befehl "LOAD 13" aus dem Video. 13 ist damit die effektive Adresse der anzusprechenden Speicherzelle bei Verwendung der direkten bzw. absoluten Adressierung. Um es etwas deutlicher zu machen, betrachtet man diesen Befehl im Zweiadressformat:

LOAD ACC, 13

Der Inhalt der Speicherzelle 13 wird in das Register Akkumulator geladen. Bis hierher ist es immer noch die direkte bzw. absolute Adressierung.

Der Schritt zur indizierten Adressierung mit Verschiebung besteht nun darin zu erkennen, dass die "Verschiebung" 13 aus dem Beispielbefehl immer von Speicherzelle 0 aus geschieht. Man könnte also sagen: "0+13" ist die effektive Adresse der anzusprechenden Speicherzelle.

Statt der Addition von Null in "0+13" könnte aber auch eine Addition mit dem Inhalt eines Registers stattfinden. Abhängig vom Inhalt dieses Registers geschieht dann eine Verschiebung um 13. Diesen Befehl schreibt man dann als:

LOAD ACC, 13(R2)

Die Bedeutung ist: Lade den Inhalt der Speicherzelle (R2+13) in den Akkumulator. Ist in R2 der Wert 123 gespeichert, so wird auf die effektive Adresse 123+13 = 136 zugegriffen.

Die indizierte Adressierung mit Verschiebung war in der Vergangenheit ein bedeutender Meilenstein. Damit wurde eine wichtige Voraussetzung geschaffen, um mehrere Programme gleichzeitig im Hauptspeicher zu halten.