[gesichtete Version] | [gesichtete Version] |
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
<loop_area type="definition">'''Definition: Adressierungsart'''<br />Unter einer Adressierungsart versteht man eine Möglichkeit, wie die CPU einen in einem Befehl angegebenen Operanden interpretiert. | <loop_area type="definition">'''Definition: Adressierungsart'''<br />Unter einer Adressierungsart versteht man eine Möglichkeit, wie die CPU einen in einem Befehl angegebenen Operanden interpretiert. | ||
</loop_area> | </loop_area> | ||
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. | |||
<loop_area type="definition">'''Definition: Effektive Adresse (Physikalische Adresse)'''<br /> | |||
Unter der '''effektiven Adresse''' versteht man die tatsächliche Adresse einer Speicherzelle im Hauptspeicher. Man nennt dieses auch die '''physikalische Adresse'''. | |||
</loop_area> | |||
Im Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] wurden bereits zwei Varianten gezeigt: | Im Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] wurden bereits zwei Varianten gezeigt: | ||
* Der Operand ist eine Zahl | * Der Operand ist eine Zahl | ||
Zeile 22: | Zeile 32: | ||
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. | |||
=== Adressierungsarten === | === Adressierungsarten === |
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,
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:
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.
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!)
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 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.
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:
Auf die unmittelbare und die direkte/absolute Adressierung wurde bereits oben auf dieser Seite eingegangen.
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
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