ZALR ACC,loc16
6-394
ZALR ACC,loc16 Zero AL and Load AH With Rounding
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
ZALR ACC,loc16 0101 0110 0001 0011
0000 0000 LLLL LLLL
1 − 1
Operands ACC Accumulator register
loc16 Addressing mode (see Chapter 5)
Description Load low accumulator (AL) with the value 0x8000 and load high accumulator
(AH) with the 16-bit contents pointed to by the ”loc16” addressing mode.
AH = [loc16];
AL = 0x8000;
Flags and
Modes
N The load to ACC is tested for a negative condition. If bit 31 of ACC is 1, then
the negative flag bit is set; otherwise it is cleared.
Z The load to ACC is tested for a zero condition. The zero flag bit is set if the
operation generates ACC = 0; otherwise it is cleared
Repeat This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
Example
; Calculate: Y = round(M*X << 1 + B << 16)
; Y, M, X, B are all Q15 numbers
SPM +1 ; Set product shift mode to << 1
MOV T,@M ; T = M (Q15)
MPY P,T,@X ; P = M * X (Q30)
ZALR ACC,@B ; ACC = B << 16 + 0x8000 (Q31)
ADDL ACC,P << PM ; Add P to ACC with shift (Q31)
MOV @Y,AH ; Store AH into Y (Q15)