SFR ACC,#1..16
6-325
SFR ACC,#1..16 Shift Accumulator Right
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
SFR ACC,#1..16 1111 1111 0100 SHFT X Y N+1
Operands ACC Accumulator register
#1..16 Shift value
Description Right shift the content of the ACC register by the amount specified in the shift
field. The type of shift (arithmetic or logical) is determined by the state of the
sign extension mode (SXM) bit:
if(SXM = 1) // sign extension mode enabled
ACC = S:ACC >> shift value; // arithmetic shift right
else //sign extension mode disabled
ACC = 0:ACC >> shift value; // logical shift right
Flags and
Modes
Z After the shift, the Z flag is set if the ACC value is zero, else Z is cleared.
N After the shift, the N flag is set if bit 31 of the ACC is 1, else N is cleared.
C The last bit shifted out is loaded into the C flag bit.
SXM If (SXM = 1), then the operation behaves like an arithmetic right shift.
If (SXM = 0), then the operation behaves like a logical right shift.
Repeat This instruction is repeatable. If the operation follows a RPT instruction, then
the SFR instruction will be executed N+1 times. The state of the Z, N and C
flags will reflect the final result.
Example
; Arithmetic shift right contents of VarA by 10:
MOVL ACC,@VarA ; ACC = VarA
SETC SXM ; Enable sign extension mode
SFR ACC,#10 ; Arithmetic shift right ACC by 10
MOVL @VarA,ACC ; Store result into VarA