© 1999 Scenix Semiconductor, Inc. All rights reserved.
- 29 -
www.scenix.com
SX18AC / SX20AC / SX28AC
must be initialized with appropriate values to point to the
desired page before the jump occurs. This can be done
easily with SETB and CLRB instructions or by writing a
value to the STATUS register. The device also has the
PAGE instruction, which automatically selects the page
in a single-cycle execution.
Note: N must be 0, 1, 2, or 3.
15.10.3 Call Operation
The following happens when a CALL instruction is exe-
cuted:
The current value of the program counter is increment-
ed and pushed onto the top of the stack.
The lower eight bits of the label address are copied into
the lower eight bits of the program counter.
The ninth bit of the Program Counter is cleared to zero.
The page select bits (in STATUS register) are copied
into the upper two bits of the Program Counter.
This means that the call destination must start in the
lower half of any page. For example, 00h-0FFh, 200h-
2FFh, 400h-4FFh, etc.
15.10.4 Page Call Operation
When a subroutine that resides on a different page is
called, the page select bits must contain the proper val-
ues to point to the desired page before the call instruction
is executed. This can be done easily using SETB and
CLRB instructions or writing a value to the STATUS reg-
ister. The device also has the PAGE instruction, which
automatically selects the page in a single-cycle execu-
tion.
Note:N must be 0, 1, 2, or 3.
15.11 Return Instructions
The device has several instructions for returning from
subroutines and interrupt service routines. The return
from subroutine instructions are RET (return without
affecting W), RETP (same as RET but affects PA1:PA0),
RETI (return from interrupt), RETIW (return and add W to
RTCC), and RETW #literal (return and place literal in W).
The literal serves as an immediate data value from mem-
ory. This instruction can be used for table lookup opera-
tions. To do table lookup, the table must contain a string
of RETW #literal instructions. The first instruction just in
front of the table calculates the offset into the table. The
table can be used as a result of a CALL.
15.12 Subroutine Operation
15.12.1 Push Operation
When a subroutine is called, the return address is
pushed onto the subroutine stack. Specifically, each
address in the stack is moved to the next lower level in
order to make room for the new address to be stored.
Stack 1 receives the contents of the program counter.
Stack 8 is overwritten with what was in Stack 7. The con-
tents of stack 8 are lost.
15.12.2 Pop Operation
When a return instruction is executed the subroutine
stack is popped. Specifically, the contents of Stack 1 are
copied into the program counter and the contents of each
stack level are moved to the next higher level. For exam-
ple, Stack 1 receives the contents of Stack 2, etc., until
Stack 7 is overwritten with the contents of Stack 8. Stack
8 is left unchanged, so the contents of Stack 8 are dupli-
cated in Stack 7.
STATUS<6:5>
JMP LABEL
PC<10:9>
PC<8:0>
PAGE N
STATUS<6:5>
JMP LABEL
PC<10:9>
PC<8:0>
STATUS<6:5>
0
CALL LABEL
PC<10:9>
PC<8>
PC<7:0>
PAGE N
STATUS<6:5>
0
CALL LABEL
PC<10:9>
PC<8>
PC<7:0>
PC<10:0>
STACK 1
STACK 2
STACK 3
STACK 4
STACK 5
STACK 6
STACK 7
STACK 8