STA ($ll), Y

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: 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

Ass befehl 91.gif

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

Beispielprogramme