LDX $hhll, Y
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | LDX $hhll, Y | |||
Opcode: | $BE | |||
Operand(en): | $ll $hh | |||
Anzahl der Bytes: | 3 | |||
Befehlsgruppe: | Transfer-Befehl | |||
Adressierung: | absolut Y-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 LDX $hhll,Y lädt das X-Register mit dem Inhalt der Speicherzelle ($hhll+Y).
Das X-Register ist ein 8-Bit-Register mit einem Wert zwischen 0 und 255 ($ff).
Ein korrespondierender Befehl STX $hhll,Y ist im Befehlssatz nicht vorhanden.
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
LDX | LoaD X-Register |
Lade X-Register |
Beispiel
; Diese Programm konvertiert die Farbe aller 8 Sprites in schwarz/weiß: ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms ldy #$07 loop: ldx $d027,y ; Farbe von Sprite Y lda convert,x ; helle Farbe auf weiß, dunkle auf schwarz sta $d027,y ; konvertieren dey ; 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 a0 07 ldx #$07 . 0c002 be 27 d0 ldy $d027,x . 0c005 bd 0f c0 lda $c00f,y . 0c008 99 27 d0 sta $d027,x . 0c00b 88 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:........