TSX
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | TSX |
Opcode: | $BA |
Anzahl der Bytes: | 1 |
Befehlsgruppe: | Datentransferbefehl |
Adressierung: | implizit |
Beeinflusste Flags im Statusregister: | |
Negative-Flag | |
Zero-Flag | |
Taktzyklen: | 2 |
Der Assembler-Befehl TSX kopiert den Stapelzeiger in das X-Register.
Damit hat man über die Adressierungsart absolut indiziert X-Register die Möglichkeit, auf beliebige Elemente des Stapels zuzugreifen, auch ohne diese vom Stapel zu entfernen.
Außerdem nützt dieser Befehl den Stapelverbrauch abzufragen und unter Kontrolle zu halten.
TXS ist das Gegenstück zu diesem Befehl.
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
TSX | Transfer Stackpointer to X-Register |
Kopiere Stapelzeiger ins X-Register |
Beispiel
; Dieses Programm gibt einen Text als Inline-Parameter zum JSR-Aufruf aus. ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms BSOUT = $ffd2 para = $fd start jsr print ; folgenden Inline-Text ausgeben .text "HALLO ALLERSEITS" .byte $0d,$00 ; Zeilenvorschub, Textendemarkierung jsr print ; folgenden Inline-Text ausgeben .text "BEI C64-WIKI.DE!" .byte $00 ; Textendemarkierung rts print tsx lda $0101,x ; Low-Byte der Rücksprungadresse, Stapel in Page 1 sta para lda $0102,x ; High-Byte der Rücksprungadresse sta para+1 ldy #1 ; Korrektur, weil Rücksprungadresse um 1 zu niedrig ausgabe lda (para),y ; Zeichen holen, die dem JSR folgen beq fertig ; 0 ist Endezeichen, dann Abbruch jsr BSOUT ; Zeichen ausgeben, Register bleiben unverändert! iny ; nächstes Zeichen bne ausgabe ; solange Y ungleich 0, also max. 254 Zeichen erlaubt fertig tya ; Anzahl der ausgegeben clc ; Übertrag für Addition löschen adc para ; Rücksprungadresse korrigieren sta $0101,x ; Low-Byte am Stack korrigiert lda para+1 adc #0 ; Übertrag beim High-Byte berücksichtigen sta $0102,x ; High-Byte am Stack korrigieren rts ; zurück zur Stelle nach dem Inline-Parameter
Vergleichbare BASIC-Anweisung
Keine vergleichbare BASIC-Befehlsfolge vorhanden.