彙編浮點指令fld、fstp
阿新 • • 發佈:2019-01-02
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裡面的值