- 1、本文档共99页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编语言程序设计 第11章 数值运算协处理器 例11.1 把十进制数100.25转换成协处理器中的浮点数 解: 1、进制转换:(100.25)10=(1100100.01)2 2、规格化:(1100100.01)2=126=12110 3、计算阶码:11010000101 4、数值的符号位为0, 阶码为 尾数为:1001 0001 0000 0000 0000 000 综合上述可得:(100.25)10的浮点形式为: 010010001000000000000000 几个特殊数据的存储规则: 正0: 所有的数据位都是0; 负0: 最高位为1, 其它的数据位是0; 正/负无穷: 符号位为0/1, 阶码位全为1, 有效数字全为0; NAN: 非法的浮点数, 阶码位全为1, 有效数字不全为0; 其中:NAN — Not-A-Number。 第11章 数值运算协处理器 二、浮点数转换成十进制数的步骤 该步骤与前面“十进制数转换成浮点数”的步骤是互逆的, 其具体步骤如下: 1、分割数字的符号、阶码和有效数字; 2、将偏移阶码减去偏移, 得到真正的阶码; 3、把数字写成规格化的二进制数形式; 4、把规格化的二进制数改变成非规格化的二进制数; 5、把非规格化的二进制数转换成十进制数。 例11.2 把浮点数1100000111001001000000000000转换成十进制数。 解: 1、把浮点数1100000111001001000000000000分割成三部分, 可得: 符号位是1, 阶码 尾数是1001001000000000000 2、还原阶码–100 3、该浮点数的规格化形式:1.1001001×24 (其中前面的“1.”从隐含位而来) 4、该浮点数的非规格化形式:11001.001 5、该浮点数的十进制数为-25.125 (因为符号位为1, 所以, 该数是负数) 第11章 数值运算协处理器 三、浮点数说明形式 在汇编语言中, 可用DD、DQ和DT来分别说明单精度、双精度和扩展精度的浮点数。在MASM 6.0系统中, 正浮点数前面不能书写‘+’, 但MASM 6.11系统更正了这种错误, 并提供了新的浮点数说明方法, 即:可用REAL4、REAL8和REAL10来分别代替DD、DQ和DT。 在定义浮点数时, 要使用伪指令.8087、.287或.387等。 例如: .387 data1 DD 123, -543 ;定义单精度浮点数 data2 REAL4 3.345E+3 ;定义单精度浮点数 data3 REAL8 321.545 ;定义双精度浮点数 data4 REAL10 254.555 ;定义扩展精度浮点数 第11章 数值运算协处理器 11.2 协处理器的结构 协处理器, 顾名思义, 是为与CPU协同工作而设计的, 其主要用来提高进行数学和超越函数计算的速度。在80486DX和Pentium处理器中都内置一个与80387完全兼容的协处理器。CPU执行所有的常规指令, 协处理器则执行协处理器指令, 它们能同时并行地执行各自的指令。由于现在Pentium处理器内部结构的特点, 该处理器能同时执行一条协处理器指令和二条整数指令。 11.2.1 协处理器的内部结 协处理器80x87的内部结构如下图所示。它可分为二个主要部分:控制部件(CU)和数值执行部件(NEU)。 第11章 数值运算协处理器 第11章 数值运算协处理器 控制部件(CU)把协处理器接到CPU的系统总线上, 协处理器和CPU都监视正在执行的指令流。如果当前将要执行的指令是协处理器指令(即:ESCape指令), 那么, 协处理器会自动执行它, 否则, 该指令将交给CPU来执行。 数值执行部件(NEU)复制执行所有的协处理器指令, 它有一个用8个80位的寄存器组成的堆栈, 该堆栈用于以扩展精度的浮点数据格式来存放数学指令的操作数和运算结果。在协处理器指令的执行过程中, 要么指定该堆栈寄存器中的数据, 要么使用压栈/出栈机制来从栈顶存放或读取数据。 在NEU部件中, 还有一些记录协处理器工作状态的寄存器, 如:状态寄存器、控制寄存器、标记寄存器和异常指针寄存器等。有关这些寄存器的作用将在后面给予分别介绍。 第11章 数值运算协处理器 11.2.2 状态寄存器 状态寄存器是用来标识协处理器中指令执行情况的, 它相当于CPU中的标志位寄存器。80x87协处理器的状态寄存器如下所示。 图11.5 80x87协处理器的
文档评论(0)