协处理器指令系统

协处理器指令系统

ID:30808635

大小:292.93 KB

页数:24页

时间:2019-01-03

协处理器指令系统_第1页
协处理器指令系统_第2页
协处理器指令系统_第3页
协处理器指令系统_第4页
协处理器指令系统_第5页
资源描述:

《协处理器指令系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、协处理器指令系统协处理器共有68条不同的指令,汇编程序在遇到协处理器指令助记符吋,都会将其转换成机器语言的ESC指令,ESC指令代表了协处理器的操作码。协处理器指令在执行过程中,需要访问内存单元时,CPU会为其形成内存地址。协处理器在指令执行期间内利用数据总线来传递数据。80287协处理器利用I/O地址00FAH〜00FFH来实现其与CPUZ间的数据交换,而80387〜Pentium系列芯片,则是利用I/O地址800000FAH〜800000FFH来实现这两者之间的数据交换。一.指令操作符的命名规则协处理器指令的操作符(或助忆符)在命名设计时,遵循了下列规则:1、在操作符后面加上字母P:表

2、示该指令执行完后,还进行一次堆栈弹出操作,弹出栈顶数据以后要对其它的寄存器进行相应的调整。女口:FADDP/FSUBP/FSUBRP/FMULP/FDIVP/FDIVRP等;2、在操作符后面加上字母R:表示将两个操作数的源/目的位置交换再进行运算,它仅限于减法、除法指令,因为加法和乘法不受源/目的操作数的位置影响结果。女IhFSUBR和FDIVR等;不加R时——冃的操作数二冃的操作数op源操作数加R模式——目的操作数=源操作数op目的操作数假设:栈顶数据st(O)为10,内存变量data的值为1,分别执行下列指令将有不同的结果。FSUBdata;ST(0)=ST(0)-dataFSUBRd

3、ata;ST(0)=data-ST(0)FSUBST⑶,ST(0);指令执行后,ST(3)=ST(3)-ST(0)FSUBRST⑶,ST(0);指令执行后,ST⑶=ST(0)-ST⑶3、操作符的第2个字母是I:表示内存操作数是整数(注意:不能是BYTE类型)。它对加、减、乘、除指令以及堆栈操作指令都有效。FIADDdata整数加法,它表示内存单元data是一个整数,把该整数加到栈顶的浮点数±(ST(0)=ST(0)+data)o4、操作符的第二个字母是B:表示用于操作压缩的BCD码格式的内存操作数(用TWORD声明,10个字节),如FBLD和FBSTP5、操作符的第2个字母是N:表示在指令

4、执行之前检查非屏蔽数值性错误。女口:FSAVE和FNSAVE等,前者称为等待形式(waitversion),后者称为非等待形式(no-waitversion)o在使用.8087伪指令情况下,汇编程序会在等待形式的指令前面加上指令WAIT,而在非等待形式的指令前面加上空操作指令NOP。理解了上述操作符命名规则,就能很容易地区分同类指令之间的差异。二.数据传送指令为了满足协处理器和CPUZ间进行数据交流的需求,就需要实现内存单元和协处理器之间进行数据传送的指令。协处理器的指令系统中有三大类数据传送指令:BCD传送指令、数传送指令和浮点数传送指令。(一)、BCD传送指令1、FBLD指令格式:FB

5、LDMemBCD指令功能:将操作数中的BCD数据压入协处理器的堆栈中(ST(O)=MemBCD);MemBCD是TWORD类型的内存变量。2、FBSTP指令格式:FBSTPMemBCD指令功能:将协处理器中的BCD数据存入内存(MemBCD=ST(0)),并进行堆栈的弹出操作。例如:.387datalDT123,-543data2DT2.5FBLDdatalFBSTPdata;把datal压进栈(ST(O)=datal);把当前堆顶数据弹出,并传送给data(data=ST(O))(一)、整数传送指令1、FILD指令格式:FILDMemlnt;ST(O)=MemInt其屮:Memlnt是定

6、义为整型数据类型的内存单元,但不能是用BYTE定义的存储单元。下同,不再叙述。2、FIST/FISTP指令格式:FISTMemlntFISTPMemlnt其屮:Mem是定义整型数据类型的内存单元,(用WORD,DWORD和QWORD定义)。指令功能:将协处理器堆栈栈顶的数据传送到目标存储单元中。在进行数据传送时,系统自动根据控制寄存器中舍入控制位的设置把栈顶浮点数舍入成整型数据。而FIST与FISTP的区别在以前就讲过,在执令后加P的表示带有出栈操作。那么FIST的功能是MemInt=ST(O)J0ST(O)不出栈,但FISTP则在进行传送之后再进行对栈顶进行出栈。(二)、浮点数传送指令1

7、、FLD指令格式:FLDSTReg/MemReal指令功能:将浮点数据压入协处理器的堆栈屮。当进行内存单元内容压栈时,系统会自动决定传送数据的精度。比如:用DD或REAL4定义的内存单元数值是单精度数等。STReg是处理器堆栈寄存器ST(O)〜ST(7)。例如:.387datalDWORD123,-543data2REAL8-321.5data3REAL102.5FLDdatal;压一个单精度数据进栈FLDdata2;压

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。