2.2.4 Adressierungsarten

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 24: Zeile 24:


==== Operand ist Speicheradresse ====
==== Operand ist Speicheradresse ====
In diesem Fall steht die Speicheradresse direkt im Befehl. Beispiele aus dem [http://youtu.be/cX5XLc9e_g4 Video]:
In diesem Fall steht die effektive Adresse direkt im Befehl. Beispiele aus dem [http://youtu.be/cX5XLc9e_g4 Video]:


LOAD 13<br />
LOAD 13<br />
Zeile 31: Zeile 31:


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!'')
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!'')
Bei dieser Adressierungsart entspricht der Wert des Operanden also sofort der effektiven Adresse.


Es ergibt sich in der Praxis aber recht schnell ein Problem. In dem im [http://youtu.be/cX5XLc9e_g4 Video] gezeigten Beispiel stehen nur sechs Bit für die Codierung der angesprochenen Speicherzelle im Hauptspeicher zur Verfügung, insgesamt lassen sich damit also nur 2<sup>6</sup> = 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.
Es ergibt sich in der Praxis aber recht schnell ein Problem. In dem im [http://youtu.be/cX5XLc9e_g4 Video] gezeigten Beispiel stehen nur sechs Bit für die Codierung der angesprochenen Speicherzelle im Hauptspeicher zur Verfügung, insgesamt lassen sich damit also nur 2<sup>6</sup> = 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.

Version vom 4. September 2013, 09:06 Uhr

Definition

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

Das Ziel bei der Interpretation eines Operanden während der Ausführung eines Befehls auf der CPU ist zunächst herauszufinden,

  • ob der Operand eine konkrete Zahl (Konstante) darstellt,
  • ob der Operand ein konkretes Register auf der CPU bezeichnet,
  • oder ob mit ihm die sogenannte effektive Adresse ermittelt werden kann.
Definition

Definition: Effektive Adresse (Physikalische Adresse)

Unter der effektiven Adresse versteht man die tatsächliche Adresse einer Speicherzelle im Hauptspeicher. Man nennt dieses auch die physikalische Adresse.

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 effektive Adresse 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!)

Es ergibt sich in der Praxis aber recht schnell ein Problem. In dem im Video gezeigten Beispiel stehen nur sechs Bit für die Codierung der angesprochenen Speicherzelle im Hauptspeicher 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