控制寄存器主要用于浮点数精度选择的控制、四舍五入的控制和无穷大的控制等,其低6位还可用来决定是否屏蔽协处理器的异常。指令FLDCW可用来设置控制寄存器的值。控制寄存器中控制位的分布如图11.6所示,其控制位的含义如表11.3所列。
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
| 
         IC  | 
    
    
       RC  | 
    PC | PM | UM | OM | ZM | DM | IM | 
图11.6 控制寄存器的控制位分布示意图
表11.3 控制寄存器中控制位的含义
| 控制位 | 
       控制功能说明  | 
  |
| IC(无穷大控制) | 
       0—投影,假定是无符号无穷;  | 
  |
| RC(舍入控制) | 
       00—最接近或偶数,01—舍入成负无穷,  | 
  |
| PC(精度控制) | 
       00—单精度,01—保留,11—双精度,10—扩展精度  | 
  |
| PM | 
       精度错误屏蔽位  | 
    
       若屏蔽位的值为1,则状态寄存器的相应位被屏蔽。  | 
  
| UM | 
       下溢出屏蔽位  | 
  |
| OM | 
       上溢出屏蔽位  | 
  |
| ZM | 
       除数为0屏蔽位  | 
  |
| DM | 
       非规格化操作数屏蔽位  | 
  |
| IM | 
       非法操作屏蔽位  | 
  |
标记寄存器用来表明协处理器堆栈中各存储单元内容的状态,也就是说,该寄存器可表明堆栈中的数据是合法的,还是非法的,是无穷,还是0或空等。该标记寄存器的结构如图11.7所示。
| 15 | 13 | 11 | 9 | 7 | 5 | 3 | 
         1 0  | 
    
| TAG(7) | TAG(6) | TAG(5) | TAG(4) | TAG(3) | TAG(2) | TAG(1) | TAG(0) | 
图11.7 标记寄存器结构示意图
其中:TAG(i)的取值含义:00—合法,01—0,10—非法或无穷,11—空
在协处理器中,查看标记寄存器的方法是使用指令FSTENV、FSAVE或FRSTOR,它们都能使标记寄存器与其它协处理器数据一起转存。