User guide
DS4830A User’s Guide
202
select bits (SDPS1:0; DPC.1:0), or implicitly by writing to the DP[n], BP or OFFS registers. Any indirect memory
write operation using a data pointer will set the SDPS bits, thus activating the write pointer as the active source
pointer.
move SDPS1, #1 ; (explicit) selection of FP as the pointer
move DP[0], src ; (implicit) selection of DP[0]; set SDPS1:0=00b
move DP[1], DP[1] ; (implicit) selection of DP[1]; set SDPS1:0=01b
move OFFS, src ; (implicit) selection of FP; set SDPS1=1
move WBS1, #0 ; (implicit) selection of byte access for DP[1]
Once the pointer selection has been made, it will remain in effect until:
• the source data pointer select bits are changed via the explicit or implicit methods described above (i.e.
another data pointer is selected for use).
• the memory to which the active source data pointer is addressing is enabled for code fetching using the
Instruction Pointer, or
• a memory write operation is performed using a data pointer other than the current active source pointer.
move DP[1], DP[1] ; select DP[1] as the active pointer
move dst, @DP[1] ; read from pointer
move @DP[1], src ; write using a data pointer
; DP[0] is needed
move DP[0], DP[0] ; select DP[0] as the active pointer
To simplify data pointer increment / decrement operations without disturbing register data, a virtual NUL destination
has been assigned to system module 6, sub-index 7 to serve as a bit bucket. Data pointer increment / decrement
operations can be done as follows without altering the contents of any other register:
move NUL, @DP[0]++ ; increment DP[0]
move NUL, @DP[0]-- ; decrement DP[0]
The following data pointer related instructions are invalid:
move @++DP[0], @DP[0]++
move @++DP[1], @DP[1]++
move @BP[++Offs], @BP[Offs++]
move @--DP[0], @DP[0]--
move @--DP[1], @DP[1]--
move @BP[--Offs], @BP[Offs--]
move @++DP[0], @DP[0]--
move @++DP[1], @DP[1]--
move @BP[++Offs], @BP[Offs--]
move @--DP[0], @DP[0]++
move @--DP[1], @DP[1]++
move @BP[--Offs], @BP[Offs++]
move @DP[0], @DP[0]++
move @DP[1], @DP[1]++
move @BP[Offs], @BP[Offs++]
move @DP[0], @DP[0]--
move @DP[1], @DP[1]--
move @BP[Offs], @BP[Offs--]
move DP[0], @DP[0]++
move DP[0], @DP[0]--
move DP[1], @DP[1]++
move DP[1], @DP[1]--
move Offs, @BP[Offs--]
move Offs, @BP[Offs++]