|
Adressierungsarten
Die meisten Befehle gestatten mehrere Adressierungsarten, aber nicht alle
Adressierungarten lassen sich auf jeden Befehl anwenden. Jede zulässigeAdressierungsart bei einem Befehl führt zu einen eigenen OP-Code.Die zulässigen Adressierungsarten und der jeweilige OP-Code lassen sichder Befehlsliste entnehmen. Die tatsächliche Länge und Ausführungszeiteines Befehls hängen von der Adressierungsart ab. Die Zahl der Bytes einesBefehls und seine Ausführungszeit lassen sich aus der Befehlsliste entnehmen. Konstanten-Adressierung (Immediate Addressing) Die Daten folgen unmittelbar auf den OP-Code. Je nach Befehl/Register sind es 8 Bit (1 Byte) oder 16 Bit (2 Byte). Im Assembler wird dies durch Voranstellenvon "#" kenntlich gemacht, zum Beispiel: LDAA #20 - Lade Akku A mit dem Wert 20 Absolute Adressierung
Absolut vollständige Adressierung (Extended Addressing)Der Adreßteil des Befehls enthält eine vollständige 16-Bit-Adresse. Es ist eine Adressierung des gesamten Adreßraums möglich. Zum Beispiel:LDAA $A174 - Lade Akku A mit dem Inhalt der Speicherzelle $A174
Absolut unvollständige Adressierung (Zero Page / Direct Addressing)
Der Adreßteil enthält nur den niederwertigen Teil (LSB) der Adresse.
Der höherwertige Teil wird auf Null gesetzt. Damit lassen sich die Adressen
zwischen 0 und 255 ($0 - $FF) erreichen. Der Befehl ist ein Byte kürzer als
bei der absoluten Adressierung und deshalb auch schneller in der Ausführung.
Im Assembler wird dies durch Voranstellen von "<" gekennzeichnet.
Zum Beispiel:
LDAA <$80 - Lade Akku A mit dem Inhalt der Speicherzelle $80
Implizite Adressierung (Inherent Addressing)
Alle Adreßangaben sind im OP-Code des Befehls enthalten, es gibt keinen
Adreßteil.
- AD-Teil im Befehl nicht nötig
- entweder keine AD-Angabe nötig (NOP)
- oder AD-Angabe bezieht sich auf Register (LSRA, ABX, ...)
Indizierte Adressierung (Indexed Addressing)
Die effektive Adresse ergibt sich hier aus dem Inhalt eines Adreßregisters
(z. B. X oder Y) und einer dazu addierten Distanz (Offset), die auch Null sein kann.
Der Offset wird grundsätzlich konegativ bewertet (-128 .. +127). Die
Adreßrechnung erfolgt modulo 64 K (bleibt also immer im Adreßraum
des 68HC11. Zum Beispiel:
CLR 5,X (ergibt als Code: 6F 05)
CLR -5,X (ergibt als Code: 6F FB)
Anmerkungen zur PC-relativen Adressierung:
Es wird der PC-Stand zum Zeitpunkt der Befehlsausführung verwendet (Dies
ist nicht die Adresse, an der der Befehl beginnt, denn der PC enthält ja immer
die Adresse des nächsten, auszuführenden Befehls. Der PC ist gleich der
Adresse des Befehls + Länge des Befehls). Die PC-relative Adressierung wird
oft bei Sprungbefehlen verwendet. Zweck: lageunabhängige Programme (Ablauf
an jeder Position im Speicher).
Befehlsaufbau: offset = Zieladresse - Befehlsadresse - Befehlslänge
Befehlsausführung: Zieladresse = Befehlszählerstand + offset
Alle Adressierungsarten im überblick
|
|
|