FST             Store real                           Exceptions: I O U P
FSTP Store real and pop C3 C2 C1 C0: ? ? * ?

FST destination
FSTP destination

; FST dest ; FSTP dest
Logic destination ← ST destination ← ST
pop ST

FST copies the value in ST to the destination which can be another
register or a single or double real memory operand. FSTP copies and
then pops ST; it also accepts an extended real memory operand.


Note
If the destination is single or double real, the significand is
rounded to the width of the destination (according to the RC field
of the control word) and the exponent is converted to the width and
bias of the destination format. The instructions also check for the
over/underflow condition.
If ST contains zero, infinity, or a NaN, the significand is not
rounded but chopped on the right to fit the destination. The
exponent is also chopped on the right. These operations preserve the
value's identity as infinity or NaN (exponent all ones).
The invalid operation exception is not raised when the destination
is a non-empty stack element.


Examples
fst [mem64] ; store data, keep it on the top of the stack
fstp ST(0) ; pop data off the top of stack, no data transfer
fstp ST(1) ; pop ST(1), leaving ST(0) on the top of the stack
fst ST(4) ; store ST(4)


Opcode Format
D9 /2 FST m32
DD /2 FST m64
DD D0 + i FST ST(i)
D9 /3 FSTP m32
DD /3 FSTP m64
DB /7 FSTP m80
DD D8 + i FSTP ST(i)


Timing
Variations/
operand 8087 287 387 486 Pentium
fst reg 15-22 15-22 11 3 1 NP
fst m32 (84-90)+EA 84-90 44 7 2 NP
fst m64 (96-104)+EA 96-104 45 8 2 NP
fstp reg 17-24 17-24 12 3 1 NP
fstp m32 (86-92)+EA 86-92 44 7 2 NP
fstp m64 (98-106)+EA 98-106 45 8 2 NP
fstp m80 (52-58)+EA 52-58 53 6 3 NP