Texas Instruments MSP50C614 Stereo System User Manual


 
Individual Instruction Descriptions
4-98
4.14.17 EXTSGNS Sign Extend String
Syntax
[label] name dest
Clock,
clk
Word,
w
With RPT,
clk
Class
EXTSGNS A
n
[~] n
R
+3 1 n
R
+3 3
Execution new most significant word of
dest
STAT.SF
PC PC + 1
Flags Affected None
Opcode
Instructions 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EXTSGNS A
n
[~] 1 1 1 0 0 1 1 A
n
0 1 1 1 1 0 0 A~
Description Extend the sign bit (SF) of most significant word an additional 16 bits to the left.
The accumulator address is preincremented (internally) causing the sign of
the addressed accumulator to be extended into the next accumulator address.
This instruction ignores the string count, executing only once, but maintains
the CF and ZF status of the previous multiply or shift operation as if the
sequence was a single string.
IMPORTANT:
At this stage of documentation, a bug in this instruction causes the processor
to stall when an attempt is made to sign extend a string that has all zeros in
it. Also, the same interrupt problem on the accumulator pointers exists if the
instruction just before is not a string instruction. For customers who need the
EXTSGNS function now as it was originally intended for string data, there is
a workaround. Unfortunately, it involves the use of two accumulator pointers,
the second pointing to the position in the accumulator register file that would
correspond to the extended word location. For example, if a string exists in
memory with the value Ox943500000000 (3 word string) and the value was
to be moved to a accumulator as a 64 bit sign extended value, the following
code would have been (without bugs):
MOV AP0, 0
MOVS A0, *R0 ; R0 POINTS TO VALUE IN MEMORY
EXTSGNS A0 ; EXTENDS THE SIGN OF ABOVE ADD IN ACC(3)
Since the bug causes the above function to fail, the status of the 2 least signifi-
cant words is equal to zero. However, the same case will be correctly executed
with the desired result with the existing bug:
MOV AP0, 0 ; POINT TO LSW OF ACCUM STRING