SUB ACC,#16bit << #0..15
6-337
SUB ACC,#16bit << #0..15
Subtract Shifted Value From Accumulator
SYNTAX OPTIONS
OPCODE
OBJMODE
RPT
CYC
SUB ACC,#16bit << #0..15
1111 1111 0000 SHFT
CCCC CCCC CCCC CCCC
X
−
1
Operands
ACC
Accumulator register
#16bit
16-bit immediate constant value
#0..15
Shift value (default is ”<< #0” if no value specified)
Description
Subtract the left shifted 16-bit immediate constant value from the ACC
register. 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 = ACC − S:16bit << shift value;
else
// sign extension mode disabled
ACC = ACC − 0:16bit << shift value;
Smart Encoding:
If #16bit is an 8-bit number and the shift is zero, then the assembler will
encode this instruction as SUBB ACC, #8bit for improved efficiency. To
override this encoding, use the SUBW ACC, #16bit instruction alias.
Flags and
Z
After the subtraction, the Z flag is set if ACC is zero, else Z is cleared.
g
Modes
N
After the subtraction, the N flag is set if bit 31 of the ACC is 1, N is cleared.
C
If the subtraction generates a borrow, C is cleared; otherwise C is set.
V
If an overflow occurs, V is set; otherwise V is not affected.
OVC
If(OVM = 0, disabled) then if the operation generates a positive overflow,
then the counter is incremented and if the operation generates a negative
overflow, then the counter is decremented. If(OVM = 1, enabled) then the
counter is not affected by the operation.
SXM
If sign extension mode bit is set; then the 16-bit operand, addressed by the
”loc16” field, will be sign extended before the addition. Else, the value will be
zero extended.
OVM
If overflow mode bit is set; then the ACC value will saturate maximum
positive (0x7FFFFFFF) or maximum negative (0x80000000) if the operation
overflowed.
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 = (VarB << 10) − (23 << 6);
SETC SXM
; Turn sign extension mode on
MOV ACC,@VarB << #10
; Load ACC with VarB left shifted by 10
SUB ACC,#23 << #6
; Subtract from ACC 23 left shifted by 6
Summary of Contents for TMS320C28x
Page 30: ...1 12...
Page 80: ...This page intentionally left blank 2 50 This page intentionally left blank...
Page 269: ...IN loc16 PA 6 112 MOV AL 0 AL 0 UOUT IORegC AL IOspace IORegC AL 10...
Page 308: ...MAXCUL P loc32 6 151 Saturate MOVL Var64 2 ACC Store result into Var64 MOVL Var64 P...
Page 509: ...SUBL ACC P PM 6 352 SUBL ACC P PM ACC S B 11 M X 4 MOVH Y ACC 5 Store Q15 result into Y...
Page 585: ...This page intentionally left blank 7 32 This page intentionally left blank...