11.3.6 常数操作指令等
11.3.6 常数操作指令
为了计算的方便,协处理器提供了几个将常用常数压栈的指令。如表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.3.7 协处理器控制指令
协处理器控制指令是用来实现控制协处理器状态而设置的,它包括协处理器的初始化、状态寄存器内容的存取、异常处理和任务切换等操作。具体的指令及其功能说明如表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 | 空 |
寄存器 | -- | 不改变 |