XPWRITE *A,loc16
6-390
XPWRITE *A,loc16 C2xLP Source-Compatible Program Write
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
XPWRITE *AL,loc16 0101 0110 0011 1101
0000 0000 LLLL LLLL
1 Y N+4
Operands *AL Indirect program-memory addressing using register AL, can only access
high 64K of program space range (0x3F0000 to 0x3FFFFF)
loc16 Addressing mode (see Chapter 5)
Description Load the 16-bit program-memory location pointed to by ”*AL” addressing
mode with the 16-bit content of the location pointed to by the “loc16”
addressing mode:
Prog[0x3F:AL] = [loc16];
The C28x forces the upper 6 bits of the program memory address, specified
by the ”*AL” addressing mode, to 0x3F when using this form of the XPWRITE
instruction. This limits the program memory address to the high 64K of
program address space (0x3F0000 to 0x3FFFFF). On the C28x devices,
memory blocks are mapped to both program and data space (unified
memory), hence the ”*AL” addressing mode can be used to access data
space variables that fall within its address range.
Flags and
Modes
None
Repeat This instruction is repeatable. If the operation follows a RPT instruction, then
it will be executed N+1 times. When repeated, the ”*AL” program-memory
address is copied to an internal shadow register and the address is
post-incremented by 1 during each repetition.
Example
; Copy the contents of Array1 to Array2:
; int16 Array1[N]; // Located in data space
; int16 Array2[N]; // Located in high 64K of program space
; for(i=0; i < N; i++)
; Array2[i] = Array1[i];
MOVL XAR2,#Array1 ; XAR2 = pointer to Array1
MOV @AL,#Array2 ; AL = pointer to Array2
RPT #(N−1) ; Repeat next instruction N times
||XPWRITE *AL,*XAR2++ ; Array2[i] = Array1[i],
; i++