操作碼 |
指令 |
說明 |
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;
C1 - 如果發生堆疊下溢,則設定為 0;否則清除為 0。
C0、C2、C3 - 未定義。
#IS - 發生堆疊下溢。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。