协处理器共有68条不同的指令,汇编程序在遇到协处理器指令助记符时,都会将其转换成机器语言的ESC指令,ESC指令代表了协处理器的操作码。
协处理器指令在执行过程中,需要访问内存单元时,CPU会为其形成内存地址。协处理器在指令执行期间内利用数据总线来传递数据。80287协处理器利用I/O地址00FAH~00FFH来实现其与CPU之间的数据交换,而80387~PenTIum系列芯片,则是利用I/O地址800000FAH~800000FFH来实现这两者之间的数据交换。
协处理器的三大类数据传送指令数据传送指令
为了满足协处理器和CPU之间进行数据交流的需求,就需要实现内存单元和协处理器之间进行数据传送的指令。协处理器的指令系统中有三大类数据传送指令:BCD传送指令、浮点数传送和整数传送指令。
一、BCD传送指令
1、FBLD
指令格式:FBLD MemBCD(*)
指令功能:将内存中的BCD数据压入协处理器的堆栈中;
(*) MemType是指定数据类型Type的内存单元,如:MemBCD是BCD类型的存储单元。此后不再说明。
2、FBSTP
指令格式:FBSTP MemBCD
指令功能:将协处理器中的BCD数据存入内存,并进行堆栈的弹出操作。
例如:
二、浮点数传送指令
(*) STReg是协处理器堆栈寄存器ST(0)~ST(7)。
例如:
2、FST
3、FSTP
4、FXCH
例如:FXCH ST(2)——栈顶数据与堆栈寄存器ST(2)进行数据交换。
三、整数传送指令
1、FILD
指令格式:FILD MemInt
其中:MemInt是定义为整型数据类型的内存单元,但不能是用DB定义的存储单元。下同,不再叙述。
2、FIST/FISTP
指令FIST和FISTP的区别在于堆栈操作