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

寄存器

--

不改变