ASL $hhll, X

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: ASL $hhll, X
Opcode: $1E
Operand(en): $ll $hh
Anzahl der Bytes: 3
Befehlsgruppe: Rotations- und Schiebebefehl
Adressierung: absolut X-indiziert
Beeinflusste Flags im Statusregister:
Carry-Flag
Negative-Flag
Zero-Flag
Taktzyklen: 7
1 PC R Lese Befehl, inkrementiere PC
2 PC R lese Adress-Lowbyte, inkrementiere PC
3 PC R hole Highbyte der Adresse,
addiere Indexregister X zum Adress-Lowbyte,
inkrementiere PC
4 Adresse + X R lese von effektiver Adresse,
korrigiere Highbyte der effektiven Adresse
5 Adresse + X R* lese erneut von effektiver Adresse
6 Adresse + X W schreibe Wert auf effektive Adresse zurück
und führe Operation auf den Wert aus
7 Adresse + X W schreibe neuen Wert auf effektive Adresse
Anmerkung: * das Highbyte der effektiven Adresse könnte zu diesem Zeitpunkt ungültig sein



Der Assembler-Befehl ASL $hhll,X verschiebt die acht Bits des Inhalts der Speicherzelle ($hhll+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 Beispiel bei ASL $ll,X).


Funktionsprinzip

Ass befehl 1e.gif

Bedeutung der Buchstaben im Befehl

ASL Arithmetic Shift Left
Logisches Links-Schieben

Beispiel

Siehe auch Beispiel bei ASL $ll.

Vergleichbare BASIC-Anweisung

Für BASIC V2:

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

Beispielsweise für die Adresse 1234 + X (als X-Register). Der Inhalt der Speicherstelle beschränkt sich dabei auf Werte im Bereich von 0 bis 255, was mit Hilfe des AND-Operators sichergestellt wird. Ein Überlauf der 16-Bit-Adresse wird hier nicht berücksichtigt.

Beispielprogramme