以前就听说过浮点运算,但是只是听说过名称而已,很少运用,今天因为写程序需要用到浮点运算的运算命令,瞬间头晕了,这是什么玩意儿,说好的实数运算怎么在计算机上变成这么复杂的东西,今天就总结一下平时需要用到的浮点运算指令:

首先需要认清一点浮点运算就是数学里的实数运算,只不过是要在计算机中运算存储罢了,因为计算机只能存储整数,因此要想在计算机上进行浮点运算的确有点麻烦。


浮点运算使用三种不同的数据:

1、整数(Integer),又分为字,短整数(Short Integer)和长整数(Long Integer)

2、实数(Real)分单精度(Single Real)和双精度(Double Real)

3、压缩的二十进制数(BCD)



浮点运算数据传输指令:这类指令主要是从内存装入浮点寄存器堆数据,一般目的地址总是栈顶ST(0),用调试器你可以清楚地看到这一点.注意带P结尾的操作,是在前面操作完成之后出栈,也就是原来ST(1)的内容现在成了ST(0)的内容:

下面浮点指令:


指令

功能

EMMS

媒体空MMX状态

F2XM1

浮点栈顶绝对值

FADD

浮点加

FADDP

浮点加出栈

FBLD

浮点加载十数

FBSTP

浮点保存十数出栈

FCHS

浮点正负求反

FCLEX

浮点检查错误清除

FCMOVB

浮点低于传送

FCMOVBE

浮点不高于传送

FCMOVE

浮点相等传送

FCMOVNB

浮点不低于传送

FCMOVNBE

浮点高于传送

FCMOVNE

浮点不等传送

FCMOVNU

浮点有序传送

FCMOVU

浮点无序传送

FCOM

浮点比较

FCOMI

浮点比较加载标志

FCOMIP

浮点比较加载标志出栈

FCOMP

浮点比较出栈

FCOMPP

浮点比较出栈二

FCOS

浮点余弦

FDECSTP

浮点栈针减一

FDISI

浮点检查禁止中断

FDIV

浮点除

FDIVP

浮点除出栈

FDIVR

浮点反除

FDIVRP

浮点反除出栈

FENI

浮点检查禁止中断二

FFREE

浮点释放

FFREEP

浮点释放出栈

FIADD

浮点加整数

FICOM

浮点比较整数

FICOMP

浮点比较整数出栈

FIDIV

浮点除整数

FIDIVR

浮点反除

FILD

浮点加载整数

FIMUL

浮点乘整数

FINCSTP

浮点栈针加一

FINIT

浮点检查初始化

FIST

浮点保存整数

FISTP

浮点保存整数出栈

FISTTP

 

FISUB

浮点减整数

FISUBR

浮点反减整数

FLD

浮点加载数

FLD1

浮点加载一

FLDCW

浮点加载控制器

FLDENV

浮点加载环境

FLDL2E

浮点加载L2E

FLDL2T

浮点加载L2T

FLDLG2

浮点加载LG2

FLDLN2

浮点加载LN2

FLDPI

浮点加载PI

FLDZ

浮点加载零

FMUL

浮点乘

FMULP

浮点乘出栈

FNCLEX

浮点不检查错误清除

FNDISI

浮点不检查禁止中断

FNENI

浮点不检查禁止中断二

FNINIT

浮点不检查初始化

FNOP

浮点空

FNSAVE

浮点不检查保存状态

FNSTCW

浮点不检查保存控制器

FNSTENV

浮点不检查保存环境

FNSTSW

浮点不检查保存状态器

FPATAN

浮点部分反正切

FPREM

浮点部分余数

FPREM1

浮点部分余数二

FPTAN

浮点部分正切

FRNDINT

浮点舍入求整

FRSTOR

浮点恢复状态

FSAVE

浮点检查保存状态

FSCALE

浮点比例运算

FSETPM

浮点设置保护

FSIN

浮点正弦

FSINCOS

浮点正余弦

FSQRT

浮点平方根

FST

浮点保存

FSTCW

浮点检查保存控制器

FSTENV

浮点检查保存环境

FSTP

浮点保存出栈

FSTSW

浮点检查保存状态器

FSUB

浮点减

FSUBP

浮点减出栈

FSUBR

浮点反减

FSUBRP

浮点反减出栈

FTST

浮点比零

FUCOM

浮点无序比较

FUCOMI

浮点反比加载标志

FUCOMIP

浮点反比加载标志出栈

FUCOMP

浮点无序比较出栈

FUCOMPP

浮点无序比较出栈二

FWAIT

浮点等

FXAM

浮点检查

FXCH

浮点交换

FXTRACT

浮点分解

FYL2X

浮点求L2X

FYL2XP1

浮点求L2XP1

MOVED

媒体双字传送

MOVEQ

媒体四字传送

PACKSSDW

媒体符号双字压缩

PACKSSWB

媒体符号字压缩

PACKUSWB

媒体无符号字压缩

PADDB

媒体截断字节加

PADDD

媒体截断双字加

PADDSB

媒体符号饱和字节加

PADDSIW

 

PADDSW

媒体符号饱和字加

PADDUSB

媒体无符号饱和字节加

PADDUSW

媒体无符号饱和字加

PADDW

媒体截断字加

PAND

媒体与

PANDN

媒体与非

PAVEB

 

PCMPEQB

媒体字节比等

PCMPEQD

媒体双字比等

PCMPEQW

媒体字比等

PCMPGTB

媒体字节比大

PCMPGTD

媒体双字比大

PCMPGTW

媒体字比大

PDISTIB

 

PMACHRIW

 

PMADDWD

 

PMAGW

 

PMULHRIW

 

PMULHRWC

 

PMULHW

 

PMVGEZB

 

PMVLZB

 

PMVNZB

 

PMVZB

 

POR

媒体或

PSLLD

媒体双字左移

PSLLQ

媒体四字左移

PSLLW

媒体字左移

PSRAD

媒体双字算术右移

PSRAW

媒体字算术右移

PSRLD

媒体双字右移

PSRLQ

媒体四字右移

PSRLW

媒体字右移

PSUBB

媒体截断字节减

PSUBSB

媒体符号饱和字节减

PSUBSIW

 

PSUBSW

媒体符号饱和字减

PSUBUSB

媒体无符号饱和字节减

PSUBUSW

媒体无符号饱和字减

PSUBW

媒体截断字减

PUNPCKHBW

媒体字节高位解压

PUNPCKHDQ

媒体双字高位解压

PUNPCKHWD

媒体字高位解压

PUNPCKLBW

媒体字节低位解压

PUNPCKLDQ

媒体双字低位解压

PUNPCKLWD

媒体字低位解压