beautypg.com

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

background image

___________________________________________________________________________________________________________

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)