beautypg.com

17 extsgns sign extend string – Texas Instruments MSP50C6xx User Manual

Page 185

background image

Individual Instruction Descriptions

4-99

Assembly Language Instructions

4.14.17

EXTSGNS

Sign Extend String

Syntax

[label]

name

dest

Clock, clk

Word, w

With RPT, clk

Class

EXTSGNS

An[~]

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 An[~]

1

1

1

0

0

1

1

An

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