LC *XAR7
6-121
LC *XAR7 Long Indirect Call
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
LC *XAR7 0111 0110 0000 0100 X − 4
Operands *XAR7 indirect program-memory addressing using auxiliary register XAR7, can ac-
cess full 4Mx16 program space range (0x000000 to 0x3FFFFF)
Description Indirect long call. The return PC value is pushed onto the software stack,
pointed to by SP register, in two 16-bit operations. Next, the destination
address stored in the XAR7 register is loaded into the PC:
temp(21:0) = PC + 1;
[SP] = temp(15:0);
SP = SP + 1;
[SP] = temp(21:16);
SP = SP + 1;
PC = XAR7(21:0);
Note: For more efficient function calls when operating with OBJMODE = 1, use the LCR and
LRETR instructions instead of the LC and LRET instructions.
Flags and
Modes
None
Repeat This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
Example
; Call to subroutines in SwitchTable selected by Switch value:
SwitchTable: ; Switch address table:
.long Switch0 ; Switch0 address
.long Switch1 ; Switch1 address
.
.
MOVL XAR2,#SwitchTable ; XAR2 = pointer to SwitchTable
MOVZ AR0,@Switch ; AR0 = Switch index
MOVL XAR7,*+XAR2[AR0] ; XAR7 = SwitchTable[Switch]
LC *XAR7 ; Indirect call using XAR7
.
.
Switch0: ; Subroutine 0:
.
.
LRET ; Return
Switch1: ; Subroutine 1:
.
.
LRET ; Return