ID Number: Q59127
5.10
MS-DOS
Summary:
The following code was used to view coprocessor instructions on an
80386 machine with an 80387 coprocessor. It is a combination of the
examples on Pages 384 and 385 of "Microsoft Macro Assembler 5.1
for the MS-DOS Operating System Programmer's Guide."
.model small
.386
.387
.stack 100h
.data
m1 dd 1.0
m2 dd 2.0
.code
start proc
mov ax, @data ;load address of segment
mov ds, ax ; register
fld m1 ;push m1 into st(0)
fld m2 ;push m2 into st(0)
fadd m1 ;add m2 to st(0)
fstp m1 ;pop st(0) into m1
fst m2 ;copy st(0) into m2
fld1 ;push 1 into st(0)
fldpi ;push pi into st(0)
fadd ;add st(0) and st(1)
;and pop, place result in st(0)
start endp
end start
While assembling the above code, the .386 and .387 directives must be
placed below the .model directive to generate 16-bit segments. If
placed above the .model directive, 32-bit segments will be generated
and will produce erroneous results, as 32-bit segments cannot be run
under DOS.
While running the code through CodeView, the number 7 entered in the
dialog box displays a dump of the present status of the chip.