MOV ACC,loc16<<T
6-158
MOV ACC,loc16<<T Load Accumulator With Shift
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
MOV ACC,loc16 << T 0101 0110 0000 0110
0000 0000 LLLL LLLL
1 − 1
Operands ACC Accumulator register
loc16 Addressing mode (see Chapter 5)
T Upper 16 bits of the multiplicand register, XT(31:16)
Description Load the ACC register with the left-shifted contents of the 16-bit location
pointed to by the “loc16” addressing mode. The shift value is specified by the
four least significant bits of the T register, T(3:0) = shift value = 0..15. Higher
order bits are ignored. 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] << T(3:0);
else // sign extension mode disabled
ACC = 0:[loc16] << T(3:0);
Flags and
N
After the load, the N flag is set if bit 31 of the ACC is 1, else N is cleared.
Modes
Z
After the load, the Z flag is set if the ACC value 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 << SB) + (VarB << SB)
SETC SXM ; Turn sign extension mode on
MOV T,@SA ; Load T with shift value in SA
MOV ACC,@VarA << T ; Load in ACC shifted contents of VarA
MOV T,@SB ; Load T with shift value in SB
ADD ACC,@VarB << T ; Add to ACC shifted contents of VarB