5 high (16-bit destina, 4 reading and writing regi, 5 using the arithmetic and – Maxim Integrated MAXQ7667 User Manual
Page 33: 1 selecting the active a, 5 high (16-bit destination), Bit source -6, 4 reading and writing register bits -6, 5 using the arithmetic and logic unit -6, 1 selecting the active accumulator -6, Maxq7667 user’s guide

___________________________________________________________________________________________________________
3-6
MAXQ7667 User’s Guide
3.3.4.5 High (16-Bit Destination)
← 8-Bit Source
To modify only the high byte of a given 16-bit destination, the 16-bit register should be moved into the GR register such that the low
byte can be singulated and the high byte can be written exclusively. Additional cycles are required if the destination index is greater
than 0Fh or if the source index is greater than 0Fh.
move GR, DP[0]
; move DP[0] to the GR register
move PFX[0], #20h
; get the high byte of DP[0] via GRH
move DP[0], GRL
; store the new DP[0] value
; 16-bit destination sub-index: dst=10h
; 8-bit source sub-index: src=11h
move PFX[1], #00h
;
move GR, dst
; read dst word to the GR register
move PFX[1], #00h
move PFX[4], src
; get the new src byte
move dst, GRL
; store the new dst value
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
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 zeros 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.
3.5 Using the Arithmetic and Logic Unit
The MAXQ7667 provides a 16-bit (MAXQ20) ALU, which allows operations to be performed between the active accumulator 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.
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)