2.2.4 Adressierungsarten

Definition

Definition: Adressierungsart
Unter einer Adressierungsart versteht man eine Möglichkeit, wie die CPU einen in einem Befehl angegebenen Operanden interpretiert.

Im Video Vom Quellcode zum Prozessor wurden bereits zwei Varianten gezeigt:

  • Der Operand ist eine Zahl
  • Der Operand ist eine Speicheradresse

Operand ist eine Zahl

In diesem Fall steht im Befehl eine konkrete Zahl (Konstante). Beispiele aus dem Video:

LOAD #2
LOAD #5

Man nennt dies die unmittelbare Adressierung, da die Konstante unmittelbar im Befehl steht.

Operand ist Speicheradresse

In diesem Fall steht die Speicheradresse direkt im Befehl. Beispiele aus dem Video:

LOAD 13
ADD 14
STORE 15

Man nennt dies die direkte Adressierung oder auch absolute Adressierung. (Monopoly-Spieler würden sagen: Gehe direkt zu dieser Adresse, denn es ist absolut die richtige Adresse!)

Aus dieser Adressierungsart ergibt sich aber recht schnell ein Problem. In dem im Video gezeigten Beispiel stehen nur sechs Bit für die Codierung der angesprochenen Speicheradresse zur Verfügung, insgesamt lassen sich damit also nur 26 = 64 Speicherzellen unterscheiden, viel zu wenig für die Speichergrößen in heutigen Rechnern. Selbst eine Erweiterung auf 12 oder 24 Bit pro Operand bringt noch keine Lösung des Problems.

Adressierungsarten

Es muss also noch weitere Adressierungsmöglichkeiten geben und in der Tat erläutert allein elf verschiedene Varianten, von denen an dieser Stelle nur die Folgenden vorgestellt werden:

  • unmittelbare Adressierung
  • direkte/absolute Adressierung
  • Registeradressierung
  • registerindirekte Adressierung
  • indizierte Adressierung mit Verschiebung

Auf die unmittelbare und die direkte/absolute Adressierung wurde bereits oben auf dieser Seite eingegangen.

Registeradressierung

Eine Registeradressierung liegt vor, wenn der Operand direkt ein Register der CPU bezeichnet. Diese Variante ist ebenfalls bereits aus dem Video bekannt, sie kommt dort aber nur "unsichtbar" vor.

Die im Video gezeigten (Einadress-) Befehle arbeiten auf dem Register Akkumulator. Somit liegt hier eine Registeradressierung vor. Unsichtbar ist sie deshalb, da kein Operand dafür zu sehen ist, es wird per Definition immer auf den Akkumulator zugegriffen.

In Aufgabe 1 auf der Seite Aufgaben & Co. zum Befehlsformat wird die Registeradressierung dann deutlich sichtbar. Der dort angegebene Befehl

ADD acc, acc, 14

spricht das Register Akkumulator als ersten Operanden und als Ziel für die Aufnahme des Additionsergebnisses an.

Hinweis

Hinweis
Wenn du die Aufgabe 1 auf der Seite Aufgaben & Co. zum Befehlsformat sinnvoll bearbeitet hast, dann hast du eine Reihe von weiteren Befehlen entwickelt, die ebenfalls die Registeradressierung verwenden.

Die registerindirekte Adressierung sowie die indizierte Adressierung mit Verschiebung werden auf den folgenden Seiten behandelt.


Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png