© 2000 Scenix Semiconductor, Inc. All rights reserved.
115
SX Users Manual Rev. 3.1
www.scenix.com
Chapter 3 Instruction Set
3.6.45 RETW lit
Return from Subroutine with Literal in W
Operation:
W = lit
program counter = top-of-stack
Bits affected:
none
Opcode:
1000 kkkk kkkk
Description:
This instruction causes a return from a subroutine and also puts an 8-bit literal value
into W. It pops the 12-bit value previously stored on the stack and loads that value
into the program counter. This causes the program to jump to the instruction imme-
diately following the call instruction that called the subroutine.
You can use multiple RETW lit instructions to implement a data lookup table.
Cycles:
2 in compatible mode (SX18/20/28AC and SX18/20/28AC75 only), or 3 in tur-
bo mode
Example:
mov W,$0A ;load W with value to be squared (0-7)
call square ;call lookup-table subroutine
mov $0B,W ;use subroutine results (in W)
...
;more of program (not shown)
square
;subroutine entry point
and W,#$07 ;ensure that W is less than 8
add $02,W ;add W to PC to jump to applicable retw
retw 0
;0 squared = 0, beginning of data table
retw 1
;1 squared = 1
retw 4
;2 squared = 4
retw 9
;3 squared = 9
retw 16
;4 squared = 16
retw 25
;5 squared = 25
retw 36
;6 squared = 36
retw 49
;7 squared = 49, end of data table
The square subroutine calculates the square of W and returns the result in W. To
use the subroutine, the program first loads W with the value to be squared, which
must be a value from 0 to 7. The subroutine adds the contents of W to the program
counter (the PC register at address 02h), which advances the program to the
applicable RETW lit instruction. The RETW lit instruction returns from the
subroutine with the appropriate result in W.