FLD - 載入實數

操作碼

指令

說明

D9 /0

FLD m32real

m32real 壓入 FPU 暫存器堆疊。

DD /0

FLD m64real

m64real 壓入 FPU 暫存器堆疊。

DB /5

FLD m80real

m80real 壓入 FPU 暫存器堆疊。

D9 C0+i

FLD ST(i)

將 ST(i) 壓入 FPU 暫存器堆疊。

說明

將源運算元壓入 FPU 暫存器堆疊。如果源運算元採用單精度或雙精度實數格式,則在壓入堆疊之前,會自動轉換成擴充套件型實數格式。

FLD 指令還可以將所選 FPU 暫存器 [ST(i)] 中的值壓入堆疊。此時,壓入暫存器 ST(0) 相當於複製棧頂。

操作

IF SRC is ST(i)
THEN
temp ST(i)
TOP TOP - 1;
IF SRC is memory-operand
THEN
ST(0) ExtendedReal(SRC);
ELSE (* SRC is ST(i) *)
ST(0) temp;

影響的 FPU 標誌

C1 - 如果發生堆疊上溢,則設定為 1;否則清除為 0。C0、C2、C3 - 未定義。

浮點異常

#IS - 發生堆疊上溢。

#IA 源運算元是 SNaN。如果源運算元是擴充套件雙精度浮點格式(FLD m80fp 或 FLD ST(i)),則不發生。

#D - 源運算元是非規格化值。如果源運算元是擴充套件實數格式,則不發生。

保護模式異常

#GP(0) - 如果目標位於不可寫的段。如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS、或 GS 暫存器用於訪問記憶體,並且它包含空的段選擇器。

#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。

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

#PF(錯誤程式碼) - 如果發生頁錯誤。

#AC(0) - 如果啟用對齊檢查並在目前特權級別為 3 時進行未對齊的記憶體引用。

實地址模式異常

#GP - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。

#SS - 如果記憶體運算元有效地址超出 SS 段限制。

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

虛 8086 模式異常

#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。

#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。

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

#PF(錯誤程式碼) - 如果發生頁錯誤。

#AC(0) - 如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。