<<<    Index    >>>
3-246
INSTRUCTION SET REFERENCE
FST/FSTP—Store Real
Description
The FST instruction copies the value in the ST(0) register to the destination operand, which can
be a memory location or another register in the FPU register stack. When storing the value in
memory, the value is converted to single- or double-real format.
The FSTP instruction performs the same operation as the FST instruction and then pops the
register stack. To pop the register stack, the processor marks the ST(0) register as empty and
increments the stack pointer (TOP) by 1. The FSTP instruction can also store values in memory
in extended-real format.
If the destination operand is a memory location, the operand specifies the address where the first
byte of the destination value is to be stored. If the destination operand is a register, the operand
specifies a register in the register stack relative to the top of the stack.
If the destination size is single- or double-real, the significand of the value being stored is
rounded to the width of the destination (according to rounding mode specified by the RC field
of the FPU control word), and the exponent is converted to the width and bias of the destination
format. If the value being stored is too large for the destination format, a numeric overflow
exception (#O) is generated and, if the exception is unmasked, no value is stored in the destina-
tion operand. If the value being stored is a denormal value, the denormal exception (#D) is not
generated. This condition is simply signaled as a numeric underflow exception (#U) condition.
If the value being stored is ±0, ±
?
, or a NaN, the least-significant bits of the significand and the
exponent are truncated to fit the destination format. This operation preserves the value’s identity
as a 0, 
?,
 or NaN.
If the destination operand is a non-empty register, the invalid operation exception is not
generated.
Operation
DEST 
<
 ST(0);
IF instruction = FSTP 
THEN 
PopRegisterStack;
FI; 
Opcode
Instruction
Description
D9 /2
FST m32real
Copy ST(0) to m32real 
DD /2
FST m64real
Copy ST(0) to m64real
DD D0+i
FST ST(i)
Copy ST(0) to ST(i)
D9 /3
FSTP m32real
Copy ST(0) to m32real and pop register stack
DD /3
FSTP m64real
Copy ST(0) to m64real and pop register stack
DB /7
FSTP m80real
Copy ST(0) to m80real and pop register stack
DD D8+i
FSTP ST(i)
Copy ST(0) to ST(i) and pop register stack
<<<    Index    >>>