Motorola DSP96002 User Manual
Page 710
MOTOROLA
DSP96002 USER’S MANUAL
B-191
and d3,d0 d1.l,x:(r0+ls) ;truncate to an integer
move d0.l,x:(r0+ms) ;store the result
rts
rndls sub d2,d4 x:(r0+ls),d1.l ;calculate # shifts, get ls
move d4.l,d0.h ;put # shifts in .h register
asr d0,d3 ;create the truncation mask
and d3,d1 ;truncate to an integer
move d1.l,x:(r0+ls) ;store the result
rts
page
;
; MOTOROLA DSP96002 DPLIB - VERSION 1.0
;
; DP_MAC - Multiply two double precision numbers and
; accumulate the sum.
;
; Entry point: dp_mac: c(r0)
←
c(r0) + c(r1) * c(r2)
;
; Inputs: r0 contains the lowest address of a 4-word internal
; extended precision number
; r1 contains the lowest address of a 4-word internal
; extended precision number
;
; Outputs: r0 contains the lowest address of a 4-word internal
; extended precision number
;
; Alters: D0.L,D1.L,D2.L,D3.L,D4.L,D5.L,D6.L,D7.L,D8.L,D9.L
;
dp_mac move r0,d8.l ;store the r0 pointer
move #dptemp,r0 ;get temporary pointer
jsr dp_mpy ;multiply (r1)*(r2)
move r1,d9.l ;store the r1 pointer
move #dptemp,r1 ;point to result
move d8.l,r0 ;restore the r0 pointer
jsr dp_add ;accumulate the result
move d9.l,r1 ;restore the r1 pointer
rts
page
;
; MOTOROLA DSP96002 DPLIB - VERSION 1.0
;
; DP_MOVE - Copy floating-point value from one address to another
;
; Entry point: dp_move: c(r0)
←
c(r1)
;
; Inputs: r0 contains the lowest address of a 4-word internal
; extended precision number
; r1 contains the lowest address of a 4-word internal
; extended precision number
;
; Outputs: r0 contains the lowest address of a 4-word internal
; extended precision number
;