15
15 – 76
Syntax:
[ IF cond ] CALL
(I4)
;
(I5)
(I6)
(I7)
<addr>
Permissible conds (see Table 15.9)
EQ
NE
GT
GE
LT
LE
NEG
POS
AV
NOT AV
AC
NOT AC
MV
NOT MV
NOT CE
Example:
IF AV CALL scale_down;
Description:
Test the optional condition and, if true, then perform the
specified call. If the condition is not true then perform a no-operation.
Omitting the condition performs the call unconditionally. The CALL
instruction is intended for calling subroutines. CALL pushes the PC stack
with the return address and causes program execution to continue at the
effective address specified by the instruction. The addressing modes
available for the CALL instruction are direct or register indirect.
For direct addressing (using an immediate address value or a label), the
program address is stored directly in the instruction word as a full 14-bit
field. For register indirect jumps, the selected I register provides the
address; it is not post-modified in this case.
If CALL is the last instruction inside a DO UNTIL loop, you must ensure
that the loop stacks are properly handled.
Status Generated:
None affected.
Instruction Field:
Conditional JUMP Direct Instruction Type 10:
23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 1 1 ADDR COND
Conditional JUMP Indirect Instruction Type 19:
23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 I 0 1 COND
I specifies the I register (Indirect Address Pointer).
ADDR: immediate jump address
COND: condition
PROGRAM FLOW
CALL