82 subs subtract accumulataor string – Texas Instruments MSP50C6xx User Manual
Page 265
Individual Instruction Descriptions
4-179
Assembly Language Instructions
4.14.82
SUBS
Subtract Accumulataor String
Syntax
[label]
name
dest, src, src1
Clock, clk
Word, w
With RPT, clk
Class
SUBS
An[~], An, {adrs}
Table 4–46
Table 4–46
1a
SUBS
An[~], An[~], pma16
n
s
+4
2
N/R
32b
SUBS
An[~], An, An~
n
s
+2
1
n
R
+2
3
SUBS
An[~], An~, An
n
s
+2
1
n
R
+2
3
SUBS
†
An[~], An[~], PH
1
1
1
3
† This instruction ignores the string count, executing only once but maintains the CF and ZF status of the previous multi-
ply or shift operation as if the sequence was a single string. This instruction should immediately follow one of the fol-
lowing class 1b instructions: MOVAPH, MULAPL, MULSPL, SHLTPL, SHLSPL, and SHLAPL. An interrupt can occur
between one of these instructions and this instruction. An interrupt may cause an incorrect result. Also, single stepping
is not allowed for this instruction. An in this instruction should be the same as An in one of the listed class 1b instruc-
tion. Offsets are allowed. See Section 4.8 for detail.
Execution
[premodify AP if mod specified]
dest
⇐
dest – src
(for two operands)
dest
⇐
src – src1
(for three operands)
PC
⇐
PC + w
Flags Affected
dest is An:
OF, SF, ZF, CF are set accordingly
src1 is {adrs}:
TAG bit is set accordingly
Opcode
Instructions
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
SUBS An[~], An, {adrs}
0
0
0
1
~A
1
1
An
adrs
x
dma16 (for direct) or offset16 (long relative) [see section 4.13]
SUBS An[~], An[~], pma16
1
1
1
0
0
1
1
An
0
1
0
0
1
1
A~
~A
SUBS An[~], An, An~
1
1
1
0
0
1
1
An
0
0
1
0
0
0
0
~A
SUBS An[~], An~, An
1
1
1
0
0
1
1
An
0
0
1
0
0
0
1
~A
SUBS An[~], An[~], PH
1
1
1
0
0
1
1
An
0
1
1
0
0
0
A~
~A
Description
Subtract the value of the src string from value of the dest string and store the
result in the dest string. If three operands are specified, then subtract value of
src1 string from value of src string (i.e., src–src1) and store result in dest string.
Note that, substraction is performed in 2’s complement and therefore the CF
(carry flag) may get set even when subtracting a smaller value from a large
value.