beautypg.com

Motorola DSP96002 User Manual

Page 715

background image

B-196

DSP96002 USER’S MANUAL

MOTOROLA

; extended precision number

;

; Outputs: r0 contains the lowest address of the 4-word internal

; extended precision number with the result

;

; Alters: D0.L,D1.L,D2.L,D3.L,D4.L,D5.L,D6.L,D7.L,D0.H,D1.H

;

dp_sub jsr dp_neg ;negate the operand

jsr dp_add ;add the numbers

jmp dp_neg ;negate the operand

;

; MOTOROLA DSP96002 DPLIB - VERSION 1.0
;
; DP_TST - Test a double precision operand. (The same as "TST.")
;

; Entry point: dp_tst: c(r0) - 0 (Set the flags)

;

; Inputs: r0 contains the lowest address of the 4-word internal

; extended precision number

;

; Outputs: none

;

; CCR CONDITION CODES:

;

; C - NOT AFFECTED.

; V - ALWAYS CLEARED

; Z - SET IF RESULT IS ZERO, CLEARED OTHERWISE.

; N - SET IF RESULT IS NEGATIVE, CLEARED OTHERWISE.

; I - NOT AFFECTED.

; LR - NOT AFFECTED.

; R - NOT AFFECTED.

; A - NOT AFFECTED.

;

; The following Jcc branch conditions can be used after

; calling dp_tst. The other branch conditions should not

; be used.

;

; "cc" Mnemonic Condition

; EQ - equal Z = 1

; GE - greater than or equal N eor V = 0

; GT - greater than Z + (N eor V) = 0

; LE - less than or equal Z + (N eor V) = 1

; LT - less than N eor V = 1

; NE - not equal Z = 0

;

; Alters: D0.L,D1.L,D2.L

;

dp_tst move x:(r0+ms),d0.l ;get ms

tst d0 x:(r0+sign),d1.l ;test ms = 0, get sign

jeq mszero ;if zero, check if ls = 0

sgntst tst d1 #-1,d0.l ;test the sign

move #2,d1.l ;get offset for negative sign

add d1,d0 ifeq ;make d0 same sign as (r0)