Texas Instruments MSP50C6xx Calculator User Manual


 
Individual Instruction Descriptions
4-179Assembly 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 446 Table 446 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., srcsrc1) and store result in dest string.
Note that, substraction is performed in 2s complement and therefore the CF
(carry flag) may get set even when subtracting a smaller value from a large
value.