STA ($ll), Y
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | STA ($ll), Y |
Opcode: | $91 |
Operand(en): | $ll |
Anzahl der Bytes: | 2 |
Befehlsgruppe: | Transfer-Befehl |
Adressierung: | indirekt Y-nachindiziert |
Beeinflusste Flags im Statusregister: | |
keine | |
Taktzyklen: | 6 |
Der Assembler-Befehl STA ($ll),Y speichert den Wert des Akkumulators in die Speicherzelle jener Adresse, die sich aus der Zeigeradresse (LSB=$ll ; MSB=$ll+1) plus dem Y-Register zusammen setzt.
Man beachte, dass die Adresse selbst in einem Zwei-Byte-Block (Word) innerhalb der Zeropage liegt!
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
STA | STore Accumulator |
Speichere Akkumulator |
Beispiel
; Dieses Programm füllt den gesamten Bildschirm mit Leerzeichen. ; Programmstart mit SYS 49152 ; Hinweis: Der Bildschirmspeicher ist nur 1000 Bytes groß. Im Beispiel ; wird der Einfachheit halber ein Bereich von 1024 Bytes überschrieben. ; Dies hat zur Folge, dass auch die Sprite-Pointer verändert werden. *=$c000 ; Startadresse des Programms SCREENMEM = $fb BLOECKE = $04 ZEICHEN = " " start lda #$00 ; $fc/$fb = $0400 = Bildschirmspeicher sta SCREENMEM lda #$04 sta SCREENMEM+1 ldx #BLOECKE ; 4 Blöcke (4*256 Byte) ldy #$00 lda #ZEICHEN ; Füllzeichen = Leerzeichen schleife sta (SCREENMEM),Y ; in den Bildschirm schreiben iny ; y um 1 erhöhen bne schleife ; wiederhole bis y=0 (256 Durchläufe) inc SCREENMEM+1 ; nächster Block des Bildschirmspeichers dex ; Blockschleifenzähler um 1 vermindern bne schleife ; wiederhole bis Blockschleifenzähler=0 rts ; Rücksprung zu BASIC
Speicherauszug:
.c000 a9 00 lda #$00 .c002 85 fb sta $fb .c004 a9 04 lda #$04 .c006 85 fc sta $fc .c008 a2 04 ldx #$04 .c00a a0 00 ldy #$00 .c00c a9 20 lda #$20 .c00e 91 fb sta ($fb),y .c010 c8 iny .c011 d0 fb bne $c00e .c013 e6 fc inc $fc .c015 ca dex .c016 d0 f6 bne $c00e .c018 60 rts