LSR $ll, X

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: LSR $ll,X
Opcode: $56
Operand(en): $ll
Anzahl der Bytes: 2
Befehlsgruppe: Rotations- und Schiebebefehl
Adressierung: Zeropage X-indiziert
Beeinflusste Flags im Statusregister:
Carry-Flag
Negative-Flag
Zero-Flag
Taktzyklen: 6
1 PC R Lese Befehl, inkrementiere PC
2 PC R hole Adresse, inkrementiere PC
3 Adresse R lese von Adresse und addiere Index-Register
4 Adresse + X* R lese von effektiver Adresse
5 Adresse + X* W schreibe Wert auf effektive
Adresse zurück und führe
Operation auf den Wert aus
6 Adresse + X* W schreibe neuen Wert auf effektive Adresse
Anmerkung: * das Highbyte der effektiven Adresse
ist immer Null, d.h. Seitenüberschreitungen
werden nicht beachtet



Der Assembler-Befehl LSR $ll,X verschiebt die acht Bits des Zeropage-Speicherstelleninhalts ($ll+X) um eine Bit-Position nach rechts (von den höherwertigen zu den niederwertigen Bits). Das höchstwertige Bit wird 0 und das herausfallende Bit wird im Carry-Flag aufgefangen.
Damit teilt dieser Befehl den Inhalt der Speicherstelle durch 2. Der Divisionsrest wird im Carry-Flag abgebildet.

Das Negative-Flag wird dabei immer zurückgesetzt, da das Ergebnis stets einem positiven Wert entspricht.
Die zu dieser logischen Operation korrespondierende arithmetische Operation (ein hypothetischer ASR-Befehl) ist nicht implementiert und muss entsprechend ausprogrammiert werden (siehe ASL-Beispiel).

Funktionsprinzip

Ass befehl 56.gif

Bedeutung der Buchstaben im Befehl

LSR Logical Shift Right
Logisches Rechts-Schieben

Beispiel

Siehe auch Beispiele bei LSR $ll.

Vergleichbare BASIC-Anweisung

Für BASIC V2:

10 POKE (34+X) AND 255, PEEK((34+X) AND 255) / 2

Beispielsweise für die Zeropage-Adresse 34 + X (als X-Register). Die Adresse der Speicherstelle beschränkt sich dabei auf Werte im Bereich von 0 bis 255, was mit Hilfe des AND-Operators sichergestellt wird.

Beispielprogramme