为了计算的方便,协处理器提供了几个将常用常数压栈的指令。如表11.7所示。
表11.7 常数压栈指令及其常数值
| 指令格式 | 指令的功能 | 指令格式 | 指令的功能 | 
| 
         FLDZ  | 
      
         ST=+0.0  | 
      
         FLDL2T  | 
      
         ST= log210  | 
    
| 
         FLD1  | 
      
         ST=+1.0  | 
      
         FLDLG2  | 
      
         ST= log102  | 
    
| 
         FLDPI  | 
      
         ST=π  | 
      
         FLDLN2  | 
      
         ST= loge2  | 
    
| 
         FLDL2E  | 
      
         ST=log2e  | 
      
         
  | 
      
         
  | 
    
协处理器控制指令是用来实现控制协处理器状态而设置的,它包括协处理器的初始化、状态寄存器内容的存取、异常处理和任务切换等操作。具体的指令及其功能说明如表11.8所列。
表11.8 比较运算指令及其功能
| 
         指令格式  | 
      
         指令的功能  | 
    
| 
         FINIT/FNINIT  | 
      
         初始化协处理器,初始化后协处理器的状态如表11.9所列。  | 
    
| 
         FLDCW Mem16  |  
      
         将由操作数指定的字存储单元内容存储到控制寄存器中。  | 
    
| 
         FSTCW Mem16  |     
      
         把控制寄存器的内容存储到由操作数指定的字存储单元。与指令“FLDCW”相对应。  | 
    
| 
         FSTSW Mem16  |  
      
         将控制寄存器的内容传送到寄存器AX中。 在8087协处理器中无此指令。  | 
    
| 
         FCLEX/FNCLEX  | 
      
         清除状态寄存器中的“错误”和“忙”标志。  | 
    
| 
         FSAVE Mem  | 
      
         将全部机器状态存储到内存中。  | 
    
| 
         FRSTOR Mem  |  
      
         从内存复原机器状态,它可恢复由指令“FSAVE/FNSAVE”保存的信息。  | 
    
| 
         FSTENV Mem  |  
      
         存储协处理器环境。  | 
    
| 
         FLDENV Mem  |  
      
         重新装入由指令FSTENV/FNSTENV存储的协处理器环境  | 
    
| 
         FINCST  | 
      
         堆栈指针加1。  | 
    
| 
         FDECSTP  | 
      
         堆栈指针减1。  | 
    
| 
         FFREE ST(i)  |                          
      
         释放堆栈寄存器,即使其标记为空,但其内容并没有改变。  | 
    
| 
         FNOP  | 
      
         协处理器的空操作  | 
    
| 
         FWAIT  | 
      
         使处理器处于等待状态,以便协处理器完成其操作。该指令主要用于在CPU访问被协处理器影响的内存数据之前。  | 
    
表11.9 协处理器初始化的状态
| 控制项 | 值 | 状态含义 | 
| 
         控制位IC  | 
      
         0  | 
      
         投影  | 
    
| 
         控制位PC  | 
      
         10  | 
      
         扩展精度  | 
    
| 
         控制位RC  | 
      
         00  | 
      
         最近舍入或偶数  | 
    
| 
         错误屏蔽  | 
      
         11111  | 
      
         错误位关闭  | 
    
| 
         忙标志  | 
      
         0  | 
      
         不忙  | 
    
| 
         C3~C0  | 
      
         ????  | 
      
         未定  | 
    
| 
         TOP  | 
      
         000  | 
      
         堆栈栈顶设定为寄存器0  | 
    
| 
         ES  | 
      
         0  | 
      
         无错误  | 
    
| 
         错误位  | 
      
         00000  | 
      
         无错误  | 
    
| 
         全部标记  | 
      
         11  | 
      
         空  | 
    
| 
         寄存器  | 
      
         --  | 
      
         不改变  |