Ds4830a user’s guide – Maxim Integrated DS4830A Optical Microcontroller User Manual
Page 202
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++]