RTS

Aus C64-Wiki
(Weitergeleitet von rts)
Zur Navigation springenZur Suche springen
Mnemonic: 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:

  1. Stapelzeiger + 1
  2. Byte vom Stapel in das Low-Byte des Programmzählers übertragen
  3. Stapelzeiger + 1
  4. Byte vom Stapel in das High-Byte des Programmzählers übertragen
  5. 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

Ass befehl 60.gif

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

Beispielprogramme