- 1、本文档共76页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图 9.8 16位实方式异常指针内存格式 9.2.3 协处理器的初始化 表9.4 协处理器的复位状态 续表 9.3 协处理器指令系统及应用 9.3.1 指令句法 大多数指令(包括那些用于控制协处理器的)都有一个或两个参量作为输入,并且产生一到两个结果作为输出。 输入可以从寄存器栈或是存储器中获取, 但是当输入是从寄存器栈中取得, 那么NPX的操作是非常有效的。 有些指令操作隐式要求浮点栈顶元素(ST), 既可以是单独的也可能是与另一操作数的组合。 其他指令允许或要求程序员指定操作数。 同处理器指令一样,指令的参数指定(隐式的和显式的)一个源操作数和一个目的操作数。源操作数提供一个操作的输入而目的操作数接收结果, 目的操作数也可提供另一个输入。例如,处理器指令ADD AX,CX实现的功能是AX=AX+CX。在此情况下,CX寄存器是源而AX寄存器是目的。AX和CX都提供输入而AX接收操作的结果。 浮点指令句法并不那么直截了当。相同的基本助记符具有不同的解释,这取决于是使用了传统栈还是常规的指令操作数方式。 使用传统栈形式时,均采用隐式寻址,若有两个操作数,通常指的就是栈顶单元(作为源操作数)和栈顶的下一个单元ST(1)(作为目的操作数);若仅使用一个操作数, 则指的就是栈顶单元。 常规指令形式采用显式寻址。 句法上的差别由汇编器和调试器来决定指令形式。例如, FMUL指令可写成无操作数、只有一个操作数, 或是一个源和一个目的操作数。 如下面所示,每一条指令执行的操作不同: FMUL ; ST(1)=ST(1)*ST, FPOP FMUL ST(1) ; ST(1)=ST(1)*ST FMUL ST, ST(1) ; ST=ST*ST(1) 无显式操作数的指令FMUL的编码,等同于全部指定操作数的指令FMULP ST(1), ST。汇编器根据指令的形式来确定指令的操作码变量。 9.3.2 指令简介 1. 数据传送 表9.5 NPX数据传送类指令 2. 算术运算 表9.6 NPX算术指令 表9.6 NPX算术指令 表9.7 基本算术指令形式 3. 比较运算 表9.8 NPX比较指令 表9.9 比较指令所置的条件码 4. 常数加载 表9.10 NPX加载常数指令 5. 超越指令 表9.11 NPX超越指令 表9.12 用于导出高级函数的恒等式 续表 6. 协处理器控制指令 表9.13 NPX控制指令 续表 9.3.3 协处理器指令应用举例 例9.1 数据求和。 程序功能:将存储器中的十个数(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0)相加,结果放入存储器指定单元之中。 程序清单: STACK SEGMENT PARA STACK ‘STACK’ DW 200H DUP (0) STACK ENDS DATA SEGMENT PARA PUBLIC ‘DATA’ ARRAY DD 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ; 10个原始数据放在数组ARRAY中。 N DW 10D ; 数据长度。 DSUM DD ? ; 求和结果单元。 DATA ENDS CODE SEGMENT PARA PUBLIC ‘CODE’ CACULATE PROC FAR ASSUME CS: CODE, DS: DATA, SS: STACK, ES: NOTHING MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV CX, N FINIT ; 初始化协处理器。 FLDZ ; 加载+0.0到栈顶寄存器ST中, 作为累加初值。 START:MOV SI, CX ; 计算当前加数的地址偏移量。 DEC SI SHL SI, 1 ; SI=SI*4, 因为原始数据是双字长度。 SHL SI, 1
文档评论(0)