浮点数运算指令(FNC110-FNC139)用于浮点数的处理,浮点数为32位数,包括浮点数的比较、变换、四则运算、开平方运算和三角函数等13条指令。所有的浮点数处理指令都是32位指令,在使用时,大多数指令的助记符前面必须加上32位运算的标识符“D"。它们分布在指令编号为FNC110~FNC119、FNC120~FNC129、FNC130~FNC139之中。
二进制浮点数比较指令ECMP
(1)二进制浮点数比较指令ECMP(FNC110) DECMP(P)指令的使用如图1所示,将两个源操作数进行比较,比较结果反映在目标操作数中。如果操作数为常数则自动转换成二进制浮点值处理。该指令源操作数可取K、H和D,目标操作数可用Y、M和S。为32位运算指令,占17个程序步。
图1 二进制浮点数比较指令的使用
二进制浮点数区间比较指令EZCP
(2)二进制浮点数区间比较指令EZCP(FNC111) EZCP(P)指令的功能是将源操作数的内容与用二进制浮点值指定的上下二点的范围比较,对应的结果用ON/OFF反映在目标操作数上,如图2所示。该指令为32位运算指令,占17个程序步。源操作数可以是K,H和D;目标操作数为Y、M和S。[S1.]应小于[S2.],操作数为常数时将被自动转换成二进制浮点值处理。
图2 二进制浮点数区间比较指令的使用
加法指令EADD
减法指令ESUB
乘法指令EMVL
除法指令EDIV
(3)二进制浮点数的四则运算指令 浮点数的四则运算指令有加法指令EADD (FNC120)、减法指令ESUB(FNC121)、乘法指令EMVL(FNC122)和除法指令EDIV(FNC123)四条指令。四则运算指令的使用说明如图3所示,它们都是将两个源操作数中的浮点数进行运算后送入目标操作数。当除数为0时出现运算错误,不执行指令。此类指令只有32位运算,占13个程序步。运算结果影响标志位M8020(零标志)、M8021(借位标志)、M8022(进位标志)。源操作数可取K、H和D,目标操作数为D。如有常数参与运算则自动转化为浮点数。
图3 二进制浮点数四则运算指令的使用
当然,二进制的浮点运算还有开平方、三角函数运算等指令,在此就不一一赘述了。