STA $ll

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: STA $ll
Opcode: $85
Operand(en): $ll
Anzahl der Bytes: 2
Befehlsgruppe: Transfer-Befehl
Adressierung: Zeropage
Beeinflusste Flags im Statusregister:
keine
Taktzyklen: 3


Der Assembler-Befehl STA $ll speichert den Wert des Akkumulators in die Speicherzelle der Zeropage-Adresse $ll.
Der Akkumulator ist ein 8-Bit-Register mit einem Wert zwischen 0 und 255 ($ff).


Funktionsprinzip

Ass befehl 85.gif

Bedeutung der Buchstaben im Befehl

STA STore Accumulator
Speichere Akkumulator

Beispiel

; Diese Programm ändert den Blockcursor in einen Strichcursor.
; Es wird der Zeichensatz auf $3000 kopiert und entsprechend abgeändert.
; Programmstart mit SYS 49152

*=$c000         ; Startadresse des Programms

lda #$30
sta $38         ; BASIC-RAM-Ende auf $3000 setzen

sei             ; Interrupts sperren

lda $01
and #%11111011
sta $01         ; Ein/Ausgabe-Bereich aus- und Character-ROM einblenden

lda #$00        
ldy #$d0
sta $5f
sty $60
ldy #$e0
sta $5a
sty $5b
ldy #$40
sta $58
sty $59
jsr $a3bf       ; Kopierroutine: $d000-$e000 --> $3000-$4000

lda $01         
ora #%00000100
sta $01         ; Ein/Ausgabe-Bereich einblenden

cli             ; Interrupts wieder zulassen

lda $d018
and #%11110000
ora #%00001100  				
sta $d018       ; Adressbereich des Zeichensatzes auf $3000-$37FF stellen 

lda #$00
sta $3500
sta $3501
sta $3502
sta $3503
sta $3504
sta $3505
sta $3506       ; neuer Cursor

rts		; Rücksprung zu BASIC

Speicherauszug:

.c000	 a9 30     lda #$30
.c002	 85 38     sta $38
.c004	 78        sei
.c005	 a5 01     lda $01
.c007	 29 fb     and #$fb
.c009	 85 01     sta $01
.c00b	 a9 00     lda #$00
.c00d	 a0 d0     ldy #$d0
.c00f	 85 5f     sta $5f
.c011	 84 60     sty $60
.c013	 a0 e0     ldy #$e0
.c015	 85 5a     sta $5a
.c017	 84 5b     sty $5b
.c019	 a0 40     ldy #$40
.c01b	 85 58     sta $58
.c01d	 84 59     sty $59
.c01f	 20 bf a3  jsr $a3bf
.c022	 a5 01     lda $01
.c024	 09 04     ora #$04
.c026	 85 01     sta $01
.c028	 58        cli
.c029	 ad 18 d0  lda $d018
.c02c	 29 f0     and #$f0
.c02e	 09 0c     ora #$0c
.c030	 8d 18 d0  sta $d018
.c033	 a9 00     lda #$00
.c035	 8d 00 35  sta $3500
.c038	 8d 01 35  sta $3501
.c03b	 8d 02 35  sta $3502
.c03e	 8d 03 35  sta $3503
.c041	 8d 04 35  sta $3504
.c044	 8d 05 35  sta $3505
.c047	 8d 06 35  sta $3506
.c04a	 60        rts

Vergleichbare BASIC-Anweisung

Für BASIC V2:

10 POKE 2,BYTE

Die Speicherstelle 2 der Zeropage (aus der BASIC-Sicht sind Zeropage-Adressen nichts Besonderes) wird mit dem Wert aus der Variablen BYTE gesetzt.

Beispielprogramme