LDA $hhll, X
Aus C64-Wiki
Zur Navigation springenZur Suche springen
| Mnemonic: | LDA $hhll, X | |||
| Opcode: | $BD | |||
| Operand(en): | $ll $hh | |||
| Anzahl der Bytes: | 3 | |||
| Befehlsgruppe: | Transfer-Befehl | |||
| Adressierung: | absolut X-indiziert | |||
| Beeinflusste Flags im Statusregister: | ||||
| Negativ-Flag | ||||
| Zero-Flag | ||||
| Taktzyklen: | 4 | |||
| 1 Extra-Takt bei Grenzüberschreitung | ||||
| 1 | PC | R | Lese Befehl, inkrementiere PC | |
| 2 | PC | R | lese Adress-Lowbyte, inkrementiere PC | |
| 3 | PC | R | hole Highbyte der Adresse, addiere Indexregister zum Adress-Lowbyte, inkrementiere PC | |
| 4 | Adresse + I | R* | lese von effektiver Adresse, korrigiere Highbyte der effektiven Adresse | |
| 5+ | Adresse + I | R | lese erneut von effektiver Adresse | |
| Anmerkung: | I bezeichnet das Index-Register (X oder Y) | |||
| Anmerkung: | * das Highbyte der effektiven Adresse könnte zu diesem Zeitpunkt ungültig sein | |||
| Anmerkung: | + dieser Takt wird nur ausgeführt, wenn die effektive Adresse im Zyklus 4 ungültig war | |||
Der Assembler-Befehl LDA $hhll, X lädt den Akkumulator mit dem Inhalt der Speicherzelle ($hhll+X).
Der Akkumulator ist ein 8-Bit Register mit einem Wert zwischen 0 und 255 ($ff).
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
| LDA | LoaD Accumulator |
| Lade Akkumulator |
Beispiel
; Kopiert den Adressbereich $8000-$80ff in den Adressbereich $9000-$90ff. ; Programmstart mit SYS 49152 *=$c000 ldx #$00 ; X-Register = 0 loop lda $8000,x ; Lade Akku mit dem Inhalt der Speicherzelle ($8000+X) sta $9000,x ; Speichere Akku in die Speicherzelle ($9000+X) inx ; X=X+1 bne loop ; Verzweige wenn ungleich 0 auf loop rts ; Rücksprung
.c000 a2 00 ldx #$00 .c002 bd 00 80 lda $8000,x .c005 9d 00 90 sta $9000,x .c008 e8 inx .c009 d0 f7 bne $c002 .c00b 60 rts
Vergleich des Beispielprogramms mit Basic
10 FOR X=0 TO 255 20 POKE 36864+X, PEEK (32768+X) 30 NEXT X
