Article: Q40872
Product(s): See article
Version(s): 6.00 6.00b 7.00 | 6.00 6.00b 7.00
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | B_QuickBas S_C H_Fortran H_MASM SR# S890111-171 | mspl13_basic
Last Modified: 1-FEB-1990
Microsoft Macro Assembler Version 5.10 does not come with routines to
emulate a math coprocessor.
Page 382 of the "Microsoft Macro Assembler 5.1: Programmer's Guide"
states that to emulate math-coprocessor instructions, you must link
with a Microsoft high-level language that supports floating-point
emulation of the coprocessor. You would write the assembler procedure
using coprocessor instructions, then assemble with the /E option, and
finally link it with the high-level language modules.
However, only a subset of coprocessor instructions are emulated by the
Microsoft high-level languages.
If you link your Microsoft higher-level language to an assembler
routine that invokes an instruction that is NOT emulated by the
higher-level language, then the program gives a run-time error (or
possibly hangs, or gives incorrect results) when run on a machine that
has no coprocessor.
This information applies to the following products:
1. Microsoft BASIC Compiler Versions 6.00 and 6.00b
2. Microsoft BASIC Professional Development System (PDS) Version 7.00
3. Microsoft QuickBASIC Version 4.50
4. Microsoft C Compiler Version 5.10
5. Microsoft FORTRAN Compiler Version 4.10
Below is a list of the coprocessor (8087 or 80287) instructions that
are not emulated by Microsoft high-level languages:
FBLD - packed decimal load
FBSTP - packed decimal store and pop
FCOS - cosine function
FDECSTP - decrement stack pointer
FINCSTP - increment stack pointer
FINIT - initialize processor
FLDENV - load environment
FNOP - No operation
FPREM1 - partial remainder
FRSTOR - restore saved state
FSAVE - save state
FSETPM - set protected mode
FSIN - only sine function
FSINCOS - sine and cosine function
FSTENV - store environment
FUCOM - unordered comparison
FUCOMP - unordered comparison and pop
FUCOMPP - unordered comparison and double pop
FXTRACT - extract exponent and significant
Also, some of the No-Wait forms of instructions are not emulated, such
as FNSTENV and FNINIT.