<<<    Index    >>>
3-236
INSTRUCTION SET REFERENCE
FSAVE/FNSAVE—Store FPU State (Continued)
When operating a Pentium
®
 or Intel486™ processor in MS-DOS compatibility mode, it is
possible (under unusual circumstances) for an FNSAVE instruction to be interrupted prior to
being executed to handle a pending FPU exception. 
Refer to Section E.2.1.3, “No-Wait FPU Instructions Can Get FPU Interrupt in Window” in
Appendix E, Guidelines for Writing FPU Exception Handlers of the Intel Architecture Software
Developer’s Manual, Volume 1, for a description of these circumstances. An FNSAVE instruc-
tion cannot be interrupted in this way on a Pentium
®
 Pro processor.
Operation
(* Save FPU State and Registers *)
DEST(FPUControlWord) 
<
 FPUControlWord;
DEST(FPUStatusWord) 
<
 FPUStatusWord;
DEST(FPUTagWord) 
<
 FPUTagWord;
DEST(FPUDataPointer) 
<
 FPUDataPointer;
DEST(FPUInstructionPointer) 
<
 FPUInstructionPointer;
DEST(FPULastInstructionOpcode) 
<
 FPULastInstructionOpcode;
DEST(ST(0)) 
<
 ST(0);
DEST(ST(1)) 
<
 ST(1);
DEST(ST(2)) 
<
 ST(2);
DEST(ST(3)) 
<
 ST(3);
DEST(ST(4)) 
<
 ST(4);
DEST(ST(5)) 
<
 ST(5);
DEST(ST(6)) 
<
 ST(6);
DEST(ST(7)) 
<
 ST(7);
(* Initialize FPU *)
FPUControlWord 
<
 037FH;
FPUStatusWord 
<
 0;
FPUTagWord 
<
 FFFFH;
FPUDataPointer 
<
 0;
FPUInstructionPointer 
<
 0;
FPULastInstructionOpcode 
<
 0;
FPU Flags Affected
The C0, C1, C2, and C3 flags are saved and then cleared.
Floating-Point Exceptions
None.
<<<    Index    >>>