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)