MOV ACC, loc16<<#0..16
6-159
MOV ACC, loc16<<#0..16 Load Accumulator With Shift
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
MOV ACC,loc16<<#0 1000 0101 LLLL LLLL
1110 0000 LLLL LLLL
1
0
−
−
1
1
MOV ACC, loc16<<#1..15
0101 0110 0000 0011
0000 SHFT LLLL LLLL
1 − 1
1110 SHFT LLLL LLLL 0 − 1
MOV ACC, loc16<<#16 0010 0101 LLLL LLLL X − 1
Operands ACC Accumulator register
loc16 Addressing mode (see Chapter 5)
#0..16 Shift value (default is ”<< #0” if no value specified)
Description Load the ACC register with the left shifted contents of the addressed location
pointed to by the “loc16” addressing mode. The shifted value is sign
extended if sign extension mode is turned on (SXM = 1) else the shifted value
is zero extended (SXM = 0). The lower bits of the shifted value are zero filled:
if(SXM = 1) // sign extension mode enabled
ACC = S:[loc16] << shift value;
else // sign extension mode disabled
ACC = 0:[loc16] << shift value;
Flags and
Modes
N
After the load, the N flag is set if bit 31 of the ACC is 1, else N is cleared.
Z
After the load, the Z flag is set if the ACC is zero, else Z is cleared.
SXM
If sign extension mode bit is set; then the 16-bit operand, addressed by
the ”loc16” field, will be sign extended before the load; else the value will
be zero extended.
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 signed value: ACC = VarA << 10 + VarB << 6;
SETC SXM ; Turn sign extension mode on
MOV ACC,@VarA << #10 ; Load ACC with VarA left shifted by 10
ADD ACC,@VarB << #6 ; Add VarB left shifted by 6 to ACC