RET - Return from Subroutine

RET

Mit diesem Befehl wird ein Wert für den Adresspointer vom Stack geholt und dorthin gesprungen. Die Anzahl der Bytes, die vom Stack geholt werden hängt von der Speichergröße des Prozessors ab. Bis zu 64kWords (=128kByte) Programmspeicher werden 2 Byte vom Stack geholt und darüber werden 3 Byte vom Stack geholt. Der Stackpointer passt sich entsprechend an.

Achtung: Ein RET wird normalerweise durch einen CALL-Befehl eingeleitet. Passiert dies nicht, droht ein Stacküberlauf.


Beispiel:

ret ;Rücksprung auf die Adresse, die von Stack geholt wurde


Komplettes Beispiel mit Call:

lds r0, Wert1 ;Ersten Wert laden
lds r1, Wert2 ;Zweiten Wert laden
call Addition ;Berechnung aufrufen
sts Ergebnis, r0 ; Ergebnis der Berechnung speichern
...
...
// *** Subroutine für die Addition ***
// *** Die Eingangswerte sind in R0 und R1 ***
// *** Das Ergebnis ist in R0 ***
Addition:
add r0, r1
ret ;Rücksprung auf die Adresse, die von Stack geholt wurde

Statusregister: Keine Beeinflussung
Speicherplatz: 2 Byte
Taktzyklen: 4 (64kWords PC) 5 (4MWords PC)