Example 112. floating point math routine using fs – Intel 80C188XL User Manual

Page 301

Advertising
background image

MATH COPROCESSING

11-16

Example 11-2. Floating Point Math Routine Using FSINCOS

$mod186
$modc187

name example_80C187_proc

;DESCRIPTION:

This code section uses the 80C187 FSINCOS transcendental

;

instruction to convert the locus of a point from polar

;

to Cartesian coordinates.

;
;VARIABLES:

The variables consist of the radius, r, and the angle, theta.

;

Both are expressed as 32-bit reals and 0 <= theta <= pi/4.

;
;RESULTS:

The results of the computation are the coordinates x and y

;

expressed as 32-bit reals.

;
;NOTES:

This routine is coded for Intel ASM86. It is not set up as an

;

HLL-callable routine.

;
;

This code assumes that the 80C187 has already been initialized.

;

assume cs:code, ds:data

data

segment at 0100h
r

dd x.xxxx

;substitute real operand

theta

dd x.xxxx

;substitute real operand

x

dd ?

y

dd ?

data

ends

code

segment at 0080h

convert

proc far

mov

ax, data

mov

ds, ax

fld

r

;load radius

fld

theta

;load angle

fsincos

;st=cos, st(1)=sin

fmul

st, st(2)

;compute x

fstp

x

;store to memory and pop

fmul ;compute

y

fstp

y

;store to memory and pop

convert endp

code

ends
end

Advertising
This manual is related to the following products: