1. 程式人生 > >彙編浮點指令fld、fstp

彙編浮點指令fld、fstp

FLD類似於   PUSH指令 FSTP類似於  POP指令 FADD類似於  ADD指令

1、FLD

指令格式:

FLD STReg/MemReal

指令功能:

將浮點資料壓入協處理器的堆疊中。當進行記憶體單元內容壓棧時,系統會自動決定傳送資料的精度。比如:用DD或REAL4定義的記憶體單元數值是單精度數等。

STReg是處理器堆疊暫存器ST(0)~ST(7)。

例如:

.387

data1  DWORD 123, -543

data2  REAL8 -321.5

data3  REAL10 2.5

……

FLD  data1  ;壓一個單精度資料進棧

FLD  data2  ;壓一個雙精度資料進棧

FLD  ST(0)  ;把堆疊暫存器ST(0)的值再壓進棧

FLD  data3  ;壓一個擴充套件精度資料進棧

2、FST

指令格式:

指令功能:

FST  STReg/MemReal

將協處理器堆疊棧頂的資料傳送到目標運算元中。在進行資料傳送時,系統自動根據控制暫存器中舍入控制位的設定把棧頂浮點數舍入成相應精度的資料。

3、FSTP

指令格式:

FSTP  STReg/MemReal

指令功能:

與FST相類似,所不同的是:指令FST執行完後,不進行堆疊的彈出操作,即:堆疊不發生變化,而指令FSTP執行完後,則需要進行堆疊的彈出操作,堆疊將發生變化。

從上面的浮點傳送指令中可以看出,不僅可以對記憶體變數進行傳送,也可以進行暫存器之間的傳送,這一點是整型資料以及BCD型資料傳送指令所不具有的。


舉例: 彙編指令:fld dword ptr ds:[eax+0xC]   意思是將[eax+c]的值以浮點型放進ST0裡面 彙編指令:fstp dword ptr ss:[ebp-0x20] 意思是將ST0裡面的浮點值,放到ebp-20這個記憶體裡面,同是清空ST0裡面的值