ASL $ll, X

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: ASL $ll,X
Opcode: $16
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


Der Assembler-Befehl ASL $ll,X verschiebt die acht Bits des Zeropage-Speicherstelleninhalts ($ll+X) um eine Bit-Position nach links (von den niederwertigen zu den höherwertigen Bits). Das niedrigstwertige Bit wird 0 und das herausfallende Bit 7 wird im Carry-Flag aufgefangen.
Damit multipliziert dieser Befehl den adressierten Wert mit 2. Der Übertrag wird im Carry-Flag abgebildet.

Die zu dieser nach linksgehenden Operation korrespondierende rechtsgehende Operation (ein hypothetischer ASR-Befehl) ist nicht implementiert und muss entsprechend ausprogrammiert werden (siehe Abschnitt Beispiel).

Funktionsprinzip

Ass befehl 16.gif

Bedeutung der Buchstaben im Befehl

ASL Arithmetic Shift Left
Logisches Links-Schieben

Beispiel

ASR-Nachbildung (das Vorzeichen-Bit bleibt erhalten), ohne den Akkumulator zu verändern, wobei ein anderer Ansatz, beispielsweise mit BIT, wegen des fehlenden Adressierungsmodus nicht möglich ist.

*=$c000   ; Startadresse des Programms

asr           asl $01,X         ; Bit 7 ins Carry
              bcc istnull       ; Bit 7 = 0?
              inc $01,X         ; Bit 7 in Bit 0 duplizieren
istnull       ror $01,X         ; ASL rückgängig, dabei neue Bit 7 in Carry
              ror $01,X         ; ASR: dupliziertes Bit 7, identisch mit Bit 6

Speicherauszug:

.c000	 16 01		asl $01,x
.c002	 90 02		bcc $2006
.c004	 f6 01		inc $01,x
.c006	 76 01		ror $01,x
.c008	 76 01		ror $01,x

Vergleichbare BASIC-Anweisung

Für BASIC V2:

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

Beispielsweise für die Zeropage-Adresse 34 + X (als X-Register). Sowohl der Inhalt als auch 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