Indirect Addressing Modes
MOVL
*BR0++,ACC,ARP1 ; Store ACC into location pointed to by XAR3,
XBANZ
Loop,*−−,ARP2
AMODE
"loc16/loc32" Syntax
X
*BR0−−
Example(s):
; Transfer contents of Array1 to Array2 in bit reverse order:
MOVL
XAR2,#Array1+(N−1)*2 ; Load XAR2 with end address of Array1
MOVL
XAR3,#Array2+(N−1)*2 ; Load XAR3 with end address of Array2
MOV
@AR0,#N
MOV
@AR1,#N−1
Loop:
NOP
*,ARP2
MOVL
ACC,*−−
NOP
*,ARP3
MOVL
*BR0−−,ACC
NOP
*,ARP1
XBANZ
Loop,*−−
5-18
; post−increment XAR3 with AR0 reverse carry
; add, set ARP pointer to point to XAR1
; Loop until AR1 == 0, post−decrement AR1,
; set ARP to point to XAR2
Description
Address Generation:
32bitDataAddr(31:0) = XAR(ARP)
XAR(ARP)(15:0) = AR(ARP) rbsub AR0 {see note [1]}
XAR(ARP)(31:16) = unchanged
Note:
The lower 16-bits of XAR0 are reverse borrow subtracted (rbsub) from the
lower 16-bits of the selected register. Upper 16-bits of XAR0 ignored. Up-
per 16-bits of the selected register unchanged by the operation.
; Load AR0 with size of array,
; N must be a multiple of 2 (2,4,8,16,...)
; Load AR1 with loop count N
; Set ARP pointer to point to XAR2
; Load ACC with location pointed to by
; XAR2, post−decrement XAR2
; Set ARP pointer to point to XAR3
; Store ACC into location pointed to by
; XAR3, post−decrement XAR3 with AR0
; reverse borrow subtract
; Set ARP pointer to point to XAR1
; Loop until AR1 == 0, post−decrement AR1
Need help?
Do you have a question about the TMS320C28x and is the answer not in the manual?