4 reading and writing register bits -32, 5 using the arithmetic and logic unit -32, 1 selecting the active accumulator -32 – Maxim Integrated MAXQ7666 User Manual
Page 34: 2 enabling auto-increment and auto-decrement -32

If the high byte needs to be cleared to 00h, the operation can be shortened by transferring only the GRL byte to the 16-bit destination
(example follows):
move GR, DP[0]
; move DP[0] to the GR register
move DP[0], GRL
; store the new DP[0] value, 00h used for high byte
1.3.4 Reading and Writing Register Bits
The MOVE instruction can also be used to directly set or clear any one of the lowest 8 bits of a peripheral register in module 0h-5h or
a system register in module 8h. The set or clear operation will not affect the upper byte of a 16-bit register that is the target of the set
or clear operation. If a set or clear instruction is used on a destination register that does not support this type of operation, the regis-
ter high byte will be written with the prefix data and the low byte will be written with the bit mask (i.e. all 0’s with a single 1 for the set
bit operation or all ones with a single 0 for the clear bit operation).
Register bits can be set or cleared individually using the MOVE instruction as follows.
move IGE, #1
; set IGE (Interrupt Global Enable) bit
move APC.6, #0
; clear IDS bit (APC.6)
As with other instructions, prefixing is required to select destination registers beyond index 07h.
The MOVE instruction may also be used to transfer any one of the lowest 8 bits from a register source or any bit of the active accu-
mulator (Acc) to the Carry flag. There is no restriction on the source register module for the ‘MOVE C, src.bit’ instruction.
move C, IIR.3
; copy IIR.3 to Carry
move C, Acc.7
; copy Acc.7 to Carry
Prefixing is required to select source registers beyond index 15h.
1.3.5 Using the Arithmetic and Logic Unit
The MAXQ7665/MAXQ7666 provide a 16-bit (MAXQ20) ALU, which allows operations to be performed between the active accumula-
tor and any other register. The ALU configuration provides 16 accumulator registers that are also 16 bits (MAXQ20) wide, of which any
one may be selected as the active accumulator.
1.3.5.1 Selecting the Active Accumulator
Any of the 16 accumulator registers A[0] through A[15] may be selected as the active accumulator by setting the low four bits of the
Accumulator Pointer Register (AP) to the index of the accumulator register you want to select.
move AP, #01h
; select A[1] as the active accumulator
move AP, #0Fh
; select A[15] as the active accumulator
The current active accumulator can be accessed as the Acc register, which is also the register used as the implicit destination for all
arithmetic and logical operations.
move A[0], #55h
; set A[0] = 55 hex (MAXQ10)
; = 0055 hex (MAXQ20)
move AP, #00h
; select A[0] as active accumulator
move Acc, #55h
; set A[0] = 55 hex (MAXQ10)
; = 0055 hex (MAXQ20)
1.3.5.2 Enabling Auto-Increment and Auto-Decrement
The accumulator pointer AP can be set to automatically increment or decrement after each arithmetic or logical operation. This is use-
ful for operations involving a number of accumulator registers, such as adding or subtracting two multibyte integers.
If auto-increment/decrement is enabled, the AP register increments or decrements after any of the following operations:
• ADD src (Add source to active accumulator)
• ADDC src (Add source to active accumulator with carry)
• SUB src (Subtract source from active accumulator)
• SUBB src (Subtract source from active accumulator with borrow)
• AND src (Logical AND active accumulator with source)
• OR src (Logical OR active accumulator with source)
MAXQ7665/MAXQ7666 User’s Guide
1-32
Maxim Integrated