LDY $hhll, X
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | LDY $hhll, X | |||
Opcode: | $BC | |||
Operand(en): | $ll $hh | |||
Anzahl der Bytes: | 3 | |||
Befehlsgruppe: | Transfer-Befehl | |||
Adressierung: | absolut X-indiziert | |||
Beeinflusste Flags im Statusregister: | ||||
Negative-Flag | ||||
Zero-Flag | ||||
Taktzyklen: | 4 | |||
1 Extratakt bei Überschreitung einer Page-Grenze | ||||
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 LDY $hhll,X lädt das Y-Register mit dem Inhalt der Speicherzelle ($hhll+X).
Das Y-Register ist ein 8-Bit Register mit einem Wert zwischen 0 und 255 ($ff).
Ein korrespondierender Befehl STY $hhll,X ist im Befehlssatz nicht vorhanden.
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
LDY | LoaD Y-Register |
Lade Y-Register |
Beispiel
; Diese Programm konvertiert die Farbe aller 8 Sprites in schwarz/weiß: ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms ldx #$07 loop: ldy $d027,x ; Farbe von Sprite X lda convert,y ; helle Farbe auf weiß, dunkle auf schwarz sta $d027,x ; konvertieren dex ; nächstes Sprite bpl loop ; von 7 bis 0 rts ; Rücksprung convert: .by 0,1,0,1,0,0,0,1,0,0,1,0,0,1,1,1
Speicherauszug:
. 0c000 a2 07 ldx #$07 . 0c002 bc 27 d0 ldy $d027,x . 0c005 b9 0f c0 lda $c00f,y . 0c008 9d 27 d0 sta $d027,x . 0c00b ca dex . 0c00c 10 f4 bpl $c002 . 0c00e 60 rts >0c00f 00 01 00 01 00 00 00 01:........ >0c017 00 00 01 00 00 01 01 01:........