beautypg.com

Ds4830a user’s guide – Maxim Integrated DS4830A Optical Microcontroller User Manual

Page 202

background image

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++]