Texas Instruments MSP50C614 manual Mulapl A0, A0~

Models: MSP50C614

1 414
Download 414 pages 24.44 Kb
Page 148
Image 148

String Instructions

A1 string is 0x233EFBCA1223 and *0x200 = 0x9086EE3412AC. STR = 3±2=1, defines a string length of 3. Final result, A1~ string = 0x233EFBCA1223 + 0x9086EE3412AC = 0xB3C5E9FE24CF, AC5=0x24CF, AC6=0xE9FE, AC7=0xB3C5, STR=2 (unchanged). Notice that this instruction has accumulated a carry.

Special String Sequences: There are two string instructions that have a

special meaning. If any of the following instructions: MULAPL, MULSPL, MULTPL, SHLAPL, SHLSPL, SHLTPL, EXTSGNS, MOVAPH immediately precedes ADDS An[~],An[~],PH and SUBS An[~],An[~],PH, the following things happen:

1)Carry generated by the preceding instruction is used in computation.

2)Interrupts can occur between these instructions.

3)All instructions in the sequence execute as a single string operation. So, An[~] accumulator pointed by the first instruction of the sequence should be used for the remaining instructions in the sequence and changing the value of n on one of the above instructions in the sequence has no effect.

4)Accumulators used by ADDS and SUBS (when used with PH) auto±incre- ment internal registers, not APn. So subsequent ADDS and SUBS (im- mediately following) instructions write into higher accumulators.

5)The sequence ends with ADDS or SUBS (used with PH).

6)These sequences may not give same result when single step debugging because, single stepping changes the internal state. They should be used either with a hardware breakpoint or with fast run mode. The breakpoint should be set after the sequence ends.

For example,

MULAPL A0, A0~

 

ADDS A0, A0, PH

The first instruction performs a multiply-accumulate with MR and A0~, and stores PL in A0. The second instruction adds PH to the second word of memory string A0 and puts the result in accumulator string A0~. The MULAPL

±ADDS sequence is a special sequence. If A0 is AC0=0xFFFF and MR=0xFF, after execution AC0=0xFF01, AC1=0x00FE. If you replace ADDS A0, A0, PH with ADDS A1, A1, PH and A1 points to a different accumulator, the result is still the same. This is because, the state generated by MULAPL (and other similar instructions described above) is used by ADDS instruction. If another ADDS A0, A0, PH instruction follows the previous one, AC2=0x00FE since the ADDS instruction auto±increments an internal register (not APn). The same reason applies for SUBS An[~],An[~],PH instruction. IMPORTANT: Interrupts may occur between these sequences and the result can be incorrect if the in- terrupt service changes the state of the processor To prevent interrupts from happening, use the INTD instruction before the execution of the sequence and an INTE afterwards.

4-56

Page 148
Image 148
Texas Instruments MSP50C614 manual Mulapl A0, A0~