汇编80X87FPU浮点运算
(2022-08-09 15:19:22)
标签:
it |
分类: 技术 |
浮点数据格式:
在计算机中,实数的浮点格式(Floating-Point
Format)所示,分成指数、有效数字和符号位三个部分。
·
符号(Sign)——表示数据的正负,在最高有效位(MSB)。负数的符号位为1,正数的符号为0。
·
指数(Exponent)——也被称为阶码,表示数据以2为底的幂。指数采用偏移码(Biased
Exponent)表示,恒为整数。
·
有效数字(Significand)——表示数据的有效数字,反映数据的精度。有效数字一般采用规格化(Normalized)形式,是一个纯小数,所以也被称为尾数(Mantissa)、小数或分数(Fraction)。
· 单精度浮点数(32位短实数)——由1位符号、8位指数、23位有效数组成。
·
双精度浮点数(64位长实数)——由1位符号、11位指数、52位有效数组成。
·
扩展精度浮点数(80位临时实数)——由1位符号、15位指数、64位有效数组成。很多计算机中并没有80位扩展精度这种数据类型,80x87
FPU主要在内部使用它存贮中间结果,以保证最终数值的精度。
80x87的指令系统
浮点处理单元FPU具有自己的指令系统,共有几十种浮点指令,可以分成传送、算术运算、超越函数、比较、FPU控制等类。浮点指令归属于ESC指令,其前5位的操作码都是11011b,它的指令助记符均以F开头。
1. 浮点传送类指令
2. 算术运算类指令
3. 超越函数类指令
4. 浮点比较类指令
5. FPU控制类指令
采用浮点指令的汇编语言程序格式,与整数指令源程序格式是类似的,但有以下几点需要注意:
· 使用FPU选择伪指令
· 定义浮点数据
· 初始化浮点处理单元
浮点寄存器:
浮点执行环境的寄存器主要是8个通用数据寄存器和几个专用寄存器,它们是状态寄存器、控制寄存器、标记寄存器等
8个浮点数据寄存器(FPU Data Register),编号FPR0 ~
FPR7。每个浮点寄存器都是80位的,以扩展精度格式存储数据。当其他类型数据压入数据寄存器时,PFU自动转换成扩展精度;相反,数据寄存器的数据取出时,系统也会自动转换成要求的数据类型。