Instruction Set
3-29
RISC 16−Bit CPU
CALL Subroutine
Syntax CALL dst
Operation dst −> tmp dst is evaluated and stored
SP − 2 −> SP
PC −> @SP PC updated to TOS
tmp −> PC dst saved to PC
Description A subroutine call is made to an address anywhere in the 64K address space.
All addressing modes can be used. The return address (the address of the
following instruction) is stored on the stack. The call instruction is a word
instruction.
Status Bits Status bits are not affected.
Example Examples for all addressing modes are given.
CALL #EXEC ; Call on label EXEC or immediate address (e.g. #0A4h)
; SP−2 → SP, PC+2 → @SP, @PC+ → PC
CALL EXEC ; Call on the address contained in EXEC
; SP−2 → SP, PC+2 → @SP, X(PC) → PC
; Indirect address
CALL &EXEC ; Call on the address contained in absolute address
; EXEC
; SP−2 → SP, PC+2 → @SP, X(0) → PC
; Indirect address
CALL R5 ; Call on the address contained in R5
; SP−2 → SP, PC+2 → @SP, R5 → PC
; Indirect R5
CALL @R5 ; Call on the address contained in the word
; pointed to by R5
; SP−2 → SP, PC+2 → @SP, @R5 → PC
; Indirect, indirect R5
CALL @R5+ ; Call on the address contained in the word
; pointed to by R5 and increment pointer in R5.
; The next time—S/W flow uses R5 pointer—
; it can alter the program execution due to
; access to next address in a table pointed to by R5
; SP−2 → SP, PC+2 → @SP, @R5 → PC
; Indirect, indirect R5 with autoincrement
CALL X(R5) ; Call on the address contained in the address pointed
; to by R5 + X (e.g. table with address starting at X)
; X can be an address or a label
; SP−2 → SP, PC+2 → @SP, X(R5) → PC
; Indirect, indirect R5 + X