© 2000 Scenix Semiconductor, Inc. All rights reserved.
111 
SX Users Manual Rev. 3.1
www.scenix.com
Chapter 3 Instruction Set
3.6.41    RET
Return from Subroutine
Operation:
program counter = top-of-stack 
Bits affected:
none
Opcode:
0000 0000 1100
Description:
This instruction causes a return from a subroutine. It pops the 12-bit value previous-
ly stored on the stack and restores that value to the program counter. This causes the
program to jump to the instruction immediately following the call instruction that
called the subroutine. 
It is not necessary to set the PA2:PA0 bits in the STATUS register in order to return
to the correct place in the program. This is because the full 12-bit program address
is restored from the stack. The ret instruction does not use (and does not affect)
the PA2:PA0 bits. It also does not affect the W register. 
If you want to automatically configure the PA2:PA0 bits to select the current page
(the  page of the  instruction  following the call instruction), use RETP instead of
RET. 
Cycles:
2 in compatible mode (SX18/20/28AC and SX18/20/28AC75 only), or 3 in tur-
bo mode
Example:
page
$000
;set page of subroutine in STATUS reg.
call
addxy
;call subroutine addxy
mov
$0C,W
;use addxy subroutine results
...
;more of program (not shown)
addxy
;subroutine address label
mov
W,$0E
;subroutine instructions start here
add
W,$0F
...
ret 
;return from subroutine
The call instruction in this example calls a subroutine called addxy. When the
call instruction is executed, the address of the following instruction (the mov
$0C,W instruction) is pushed onto the stack and the program jumps to the addxy
routine.  When  the  ret  instruction  is  executed,  the  saved  program  address  is
popped  from  the  stack  and  restored  to  the  program  counter,  which  causes  the
program   to   continue   with   the   instruction   immediately   following   the   call
instruction.