FXCH - 交換暫存器內容

操作碼

指令

說明

D9 C8+i

FXCH ST(i)

交換 ST(0) 與 ST(i) 的內容

D9 C9

FXCH

交換 ST(0) 與 ST(1) 的內容

說明

交換暫存器 ST(0) 與 ST(i) 的內容。如果未指定源運算元,則交換 ST(0) 與 ST(1) 的內容。

此指令提供了一種簡單的辦法,可以將 FPU 暫存器堆疊中的值移到棧頂 [ST(0)],這樣,那些只能操作 ST(0) 中的值的浮點指令就能夠操作這些值。例如,以下指令序列計算從暫存器堆疊的棧頂算起第三個暫存器的平方根:

FXCH ST(3);
FSQRT;
FXCH ST(3);

操作

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 標誌

C1 - 如果發生堆疊下溢,則設定為 0;否則清除為 0。

C0、C2、C3 - 未定義。

浮點異常

#IS - 發生堆疊下溢。

保護模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。

實地址模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。

虛 8086 模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。