LDY $hhll, X
Aus C64-Wiki
Zur Navigation springenZur Suche springen
| Mnemonic: | 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:........
