SAM47 INSTRUCTION SET KS57C2308/P2308/C2316/P2316
5-86
SRET Return From Subroutine and Skip
SRET
Operation: Operand Operation Summary Bytes Cycles
Return from subroutine and skip 13 + S
Description: SRET is normally used to return to the previously executing procedure at the end of a subroutine
that was initiated by a CALL or CALLS instruction. SRET skips the resulting address, which is
generally the instruction immediately after the point at which the subroutine was called. Then,
program execution continues from the resulting address and the contents of the location
addressed by the stack pointer are popped into the program counter.
Operand Binary Code Operation Notation
– 11100101PC13–8 (SP + 1) (SP)
PC7–0 (SP + 3) (SP + 2)
EMB,ERB (SP + 4)
SP SP + 6
Example: If the stack pointer contains the value 0FAH and RAM locations 0FAH, 0FBH, 0FCH, and 0FDH
contain the values 1H, 0H, 5H, and 2H, respectively, the instruction
SRET
leaves the stack pointer with the value 00H and the program returns to continue execution at
location 0125H, then skips unconditionally.
During a return from subroutine, data is popped from the stack to the PC as follows:
SP (0FAH) PC11–PC8
SP + 1 (0FBH) 0 0 PC13 PC12
SP + 2(0FCH) PC3–PC0
SP + 3(0FDH) PC7–PC4
SP + 4(0FEH) 0 0 EMB ERB
SP + 5(0FFH) 0000
SP + 6(00H)