ITEEDU

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

FNSTCW Mem16

把控制寄存器的内容存储到由操作数指定的字存储单元。与指令“FLDCW”相对应。

FSTSW Mem16

FSTSW AX

FNSTSW Mem16

FNSTSW AX

将控制寄存器的内容传送到寄存器AX中。

在8087协处理器中无此指令。

FCLEX/FNCLEX

清除状态寄存器中的“错误”和“忙”标志。

FSAVE Mem

FNSAVE Mem
将全部机器状态存储到内存中。

FRSTOR Mem

从内存复原机器状态,它可恢复由指令“FSAVE/FNSAVE”保存的信息。

FSTENV Mem

FNSTENVMem

存储协处理器环境。

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
寄存器 -- 不改变