浮点数指令

    浮点数指令是学习的重点,我们需要学习的浮点数指令一共有26个,它们是:
1-      浮点数载入指令(2个):fld、fild。

2-      浮点数数据存储指令(4个):fst、fstp、fist、fistp。

3-      浮点型加法指令(3个):fadd、fiadd、faddp。

4-      浮点型减法指令(6个):fsub、fisub、fsubp、fsubr、fisubr、fsubrp。

5-      浮点数乘法指令(3个):fmul、fimul、fmulp。

6-      浮点数除法指令(6个):fdiv、fidiv、fdivp、fdivr、fidivr、fdivrp。

7-      附加的浮点型指令(2个):fabs、fchs。

其中,fld、fild、fst、fstp、fadd、fsub这6个指令出现率最高,务必要重点学习。

在后面的课程,学习指令的过程中,会遇到一个重要的概念:操作数。

什么是操作数?操作数就是在指令中你要处理的数据。比如:汇编指令 mov [eax+200],ebx 内存单元[eax+200]和ebx都是操作数。

在浮点数指令中,操作数可以没有,也可以有1个或2个,操作数可以是内存单元,也可以是浮点寄存器。

举例说明:指令 fabs 没有操作数;指令 fld dword ptr [eax+2a70] 内存单元[eax+2a70]就是操作数;指令 fst st(2) 浮点寄存器st(2)就是操作数;指令fadd st(1). 那么st st(1)和st都是操作数。
浮点数载入指令

说明:在下面的描述中,memory 代表存储器(内存),st(num)代表 st(1)~ st(7) 对应的浮点寄存器,num是序号,是1~7中任意一个确切的数。

 fld
  memory(实数)
 将存储器中的实数压人堆栈

 fld
  st(num)
 将浮点寄存器中的数值压入堆栈

 fild
  memory(整数)
 将存储器中的整数压人堆栈
最后修改:2022 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏