beautypg.com

Texas Instruments MSP50C6xx User Manual

Page 138

background image

MSP50P614/MSP50C614 Computational Modes

4-52

Example 4.6.1

SOVM

MOV A0, 0x7FFE

ADD A0, 5

In this example, we set the overflow mode (OM = 1 of STAT). Adding 0x7FFE
with 5 causes an overflow (OF = 1 of STAT). Since the expected result is a
positive value, the accumulator saturates to the largest representable value,
0x7FFF. If overflow mode was not set before the ADD instruction, then the
accumulator would overflow. Therefore, the result, 0x8003, would be a
negative value.

Example 4.6.2

SOVM

MOV STR, 2–2

;string length = 2

MOV AP0, 0

MOV A0, 0x1234

MOV A0~, 0x1000

MOV A0, 0x7F00, ++A

MOV A0~, 0x1000

MOV AP0,0

;point to beginning

;of string

ADD A0, A0~, A0

In this example, saturation on a string value is illustrated. A 2 word string is
loaded into the STR register. The accumulator string, A0, is loaded with
0x7F001234 and accumulator string A0~ is loaded with 0x10001000. When
the two values are added together, it causes an overflow. The OF bit of the
STAT is set to 1, the 16-bit MSBs of the string become 0x7FFF, and the lower
bits of the string become 0x2234. The final result is 0x7FFF2234. Note that if
overflow mode was not set, the result would have been 0x8F002234.

Fractional Mode: Multiplier fractional mode may be enabled/disabled by
setting/resetting the FM bit of STAT. When the multiplier is in fractional mode,
the multiplier is shifted left 1 bit to form a 17 significant bit operand. Fractional
mode avoids a divide by 2 of the product when interpreting the input operands
as signed binary fractions (Q formats). Fractional mode works with string
mode as well.

Example 4.6.1

SXM

MOV

A0, 0x7FFF

MOV

MR, 0x7FFF

MULTPL A0, A0

;0x7FFF * 0x7FFF

;PH = 0x3FFF A0~ = 0001

SFM

MULTPL A0~,A0

;PH = 0x7FFE A0~ = 0002

This example illustrates the differences between a regular multiply and a frac-
tional mode multiply. The first multiply in the above code is nonfractional. The