3-273
INSTRUCTION SET REFERENCE
FXCH—Exchange Register Contents
Description
This instruction exchanges the contents of registers ST(0) and ST(i). If no source operand is
specified, the contents of ST(0) and ST(1) are exchanged.
This instruction provides a simple means of moving values in the FPU register stack to the top
of the stack [ST(0)], so that they can be operated on by those floating-point instructions that can
only operate on values in ST(0). For example, the following instruction sequence takes the
square root of the third register from the top of the register stack:
FXCH ST(3);
FSQRT;
FXCH ST(3);
Operation
IF number-of-operands is 1
THEN
temp
<
ST(0);
ST(0)
<
SRC;
SRC
<
temp;
ELSE
temp
<
ST(0);
ST(0)
<
ST(1);
ST(1)
<
temp;
FPU Flags Affected
C1
Set to 0 if stack underflow occurred; otherwise, cleared to 0.
C0, C2, C3
Undefined.
Floating-Point Exceptions
#IS
Stack underflow occurred.
Protected Mode Exceptions
#NM
EM or TS in CR0 is set.
Opcode
Instruction
Description
D9 C8+i
FXCH ST(i)
Exchange the contents of ST(0) and ST(i)
D9 C9
FXCH
Exchange the contents of ST(0) and ST(1)