STX $ll
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | STX $ll |
Opcode: | $86 |
Operand(en): | $ll |
Anzahl der Bytes: | 2 |
Befehlsgruppe: | Datentransferbefehl |
Adressierung: | Zeropage |
Beeinflusste Flags im Statusregister: | |
keine | |
Taktzyklen: | 3 |
Der Assembler-Befehl STX $ll speichert den Wert des X-Registers in die Speicherstelle mit der Zeropage-Adresse $ll.
Der Wert des Registers ist ein Wert im Bereich von 0 bis 255 ($ff).
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
STX | STore X-Register |
Speichere X-Register |
Beispiel
; Diese Programm gibt das Disketten-Inhaltsverzeichnis verlustfrei aus. ; Ein vorhandenes Basic-Programm wird nicht überschrieben! ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms BOPEN = $ffc0 BCLOSE = $ffc3 INCMD = $ffc6 CMDOFF = $ffcc INCHAR = $ffe4 OUTCHAR = $ffd2 OUTADRES = $bdcd start lda #$93 ; Bildschirm löschen jsr OUTCHAR ldx #$01 ; logische Dateinummer stx $b8 ldx #$08 ; Gerätenummer stx $ba ldx #$00 ; Sekundäradresse stx $b9 ldx #$01 ; Länge des Dateinamens stx $b7 lda #<dateiname ; Zeiger auf Dateiname ldx #>dateiname sta $bb stx $bc jsr BOPEN ; Inhaltsverzeichnis als Programmdatei eröffnen ldx #$01 jsr INCMD ; Eingabegerät setzten jsr INCHAR ; Startadresse LSB lesen und ignorieren jsr INCHAR ; Startadresse MSB lesen und ignorieren jsr INCHAR ; Link-Adresse LSB lesen und ignorieren zeile jsr INCHAR ; Link-Adresse MSB lesen und ignorieren jsr INCHAR ; Blockanzahl LSB lesen und in Zeropage $02 speichern sta $02 jsr INCHAR ; Blockanzahl MSB lesen (Akku) ldx $02 ; Blockanzahl LSB ins X-Register jsr OUTADRES ; Blockanzahl (16 Bit) in Dezimalzahl wandeln und am Bildschirm ausgeben zeichen jsr INCHAR ; Zeichen lesen jsr OUTCHAR ; Zeichen ausgeben cmp #$00 ; Zeilenende? bne zeichen ; wiederhole bis Zeilenende erreicht lda #$0d ; Zeilenvorschub ausgeben jsr OUTCHAR jsr INCHAR ; Link-Adresse LSB lesen cmp #$00 ; immer ungleich 0, solange noch ein Eintrag bne zeile ; wiederhole bis Dateiende erreicht jsr CMDOFF ; Beendet Datenein-/ausgabe der Datei (auf Tastatur setzen) lda #$01 jsr BCLOSE ; Datei mit Dateinummer 1 schließen rts ; Rücksprung ins BASIC dateiname .byte "$"
.c000 a9 93 lda #$93 .c002 20 d2 ff jsr $ffd2 .c005 a2 01 ldx #$01 .c007 86 b8 stx $b8 .c009 a2 08 ldx #$08 .c00b 86 ba stx $ba .c00d a2 00 ldx #$00 .c00f 86 b9 stx $b9 .c011 a2 01 ldx #$01 .c013 86 b7 stx $b7 .c015 a9 5d lda #$5d .c017 a2 c0 ldx #$c0 .c019 85 bb sta $bb .c01b 86 bc stx $bc .c01d 20 c0 ff jsr $ffc0 .c020 a2 01 ldx #$01 .c022 20 c6 ff jsr $ffc6 .c025 20 e4 ff jsr $ffe4 .c028 20 e4 ff jsr $ffe4 .c02b 20 e4 ff jsr $ffe4 .c02e 20 e4 ff jsr $ffe4 .c031 20 e4 ff jsr $ffe4 .c034 85 02 sta $02 .c036 20 e4 ff jsr $ffe4 .c039 a6 02 ldx $02 .c03b 20 cd bd jsr $bdcd .c03e 20 e4 ff jsr $ffe4 .c041 20 d2 ff jsr $ffd2 .c044 c9 00 cmp #$00 .c046 d0 f6 bne $c03e .c048 a9 0d lda #$0d .c04a 20 d2 ff jsr $ffd2 .c04d 20 e4 ff jsr $ffe4 .c050 c9 00 cmp #$00 .c052 d0 da bne $c02e .c054 20 cc ff jsr $ffcc .c057 a9 01 lda #$01 .c059 20 c3 ff jsr $ffc3 .c05c 60 rts >c05d 24