RTS
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | RTS |
Opcode: | $60 |
Anzahl der Bytes: | 1 |
Befehlsgruppe: | Sprung-Befehl |
Adressierung: | implizit |
Beeinflusste Flags im Statusregister: | |
keine | |
Taktzyklen: | 6 |
Der Assembler-Befehl RTS verzweigt zu jener Adresse, die zuvor mit JSR auf den Stapel gelegt wurde.
Der Programmierer muss darauf achten, dass alle Bytes, die nach dem Unterprogrammaufruf mit JSR
auf den Stapel gelegt wurden, auch wieder vom Stapel genommen werden, bevor der Rücksprung mit RTS erfolgt.
Die genauen Schritte, die bei RTS ablaufen, sind wie folgt:
- Stapelzeiger + 1
- Byte vom Stapel in das Low-Byte des Programmzählers übertragen
- Stapelzeiger + 1
- Byte vom Stapel in das High-Byte des Programmzählers übertragen
- Programmzähler + 1
Im Gegensatz zu RTI wird auf dem Stapel die Rücksprungadresse-1 erwartet und kein Prozessorstatus vom Stapel geholt oder gesetzt.
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
RTS | ReTurn from Subroutine |
Rückkehr vom Unterprogramm |
Beispiel
; Dieses Programm setzt die Rahmen- und die Hintergrundfarbe mittels Übergabe von Parametern. ; Programmstart mit SYS 49152,Rahmenfarbe,Hintergrundfarbe *=$c000 ; Startadresse des Programms CHKKOM = $AEFD GETBYT = $B79E jsr CHKKOM ; Komma lesen jsr GETBYT ; 1. Parameter ins X-Register stx $d020 ; = Rahmenfarbe jsr CHKKOM ; Komma lesen jsr GETBYT ; 2. Parameter ins X-Register stx $d021 ; = Hintergrundfarbe rts ; Rücksprung ins BASIC
Speicherauszug:
.c000 20 fd ae jsr $aefd .c003 20 9e b7 jsr $b79e .c006 8e 20 d0 stx $d020 .c009 20 fd ae jsr $aefd .c00c 20 9e b7 jsr $b79e .c00f 8e 21 d0 stx $d021 .c012 60 rts
Vergleichbare BASIC-Anweisung
Für BASIC V2:
RETURN