首页 理论教育 浮点数运算指令的仿真实验-实训二十六

浮点数运算指令的仿真实验-实训二十六

时间:2023-07-01 理论教育 版权反馈
【摘要】:浮点数运算指令包括浮点数的四则运算、开平方和三角函数等指令。浮点数为32位数,FNC 110~127均为32位指令,所以浮点数运算指令的指令助记符的前面均应加表示32位指令的字母D。除数为零时出现运算错误,不执行指令。

浮点数运算指令的仿真实验-实训二十六

浮点数运算指令包括浮点数四则运算、开平方和三角函数等指令。

浮点数四则运算指令的源操作数(S1·)和(S2·)可以取K、H和D,目标操作数为D。浮点数为32位数,FNC 110~127均为32位指令,所以浮点数运算指令的指令助记符的前面均应加表示32位指令的字母D。

浮点数运算指令的源操作数和目标操作数均为浮点数,源数据如果是常数K、H,则将会自动转换为浮点数。

运算结果为0时,M8020(零标志)为ON,超过浮点数的上、下限时,M8022(进位标志)和M8021(借位标志)分别为ON,运算结果分别被置为最大值和最小值。

源操作数和目标操作数如果是同一个数据寄存器,则应采用脉冲执行方式。

1.二进制浮点数加法减法运算指令

二进制浮点数加法运算指令EADD(FNC 120,见图4-64)将两个源操作数内的浮点数相加,运算结果存入目标操作数。

二进制浮点数减法运算指令ESUB(FNC 121)将(S1·)指定的浮点数减去(S2·)指定的浮点数,运算结果存入目标操作数(D·)。

978-7-111-40437-8-Chapter04-79.jpg

图4-64 浮点数运算指令

2.二进制浮点数乘法除法运算指令

二进制浮点数乘法运算指令EMUL(FNC 122)将两个源操作数内的浮点数相乘,运算结果存入目标操作数(D·)。

二进制浮点数除法运算指令EDIV(FNC 123)将(S1·)指定的浮点数除以(S2·)指定的浮点数,运算结果存入目标操作数(D·)。除数为零时出现运算错误,不执行指令。

3.二进制浮点数开平方运算指令

二进制浮点数开平方运算指令ESQR(FNC 127)将源操作数(S·)指定的浮点数开平方,结果存入目标操作数(D·)。源操作数应为正数,若为负数则出错,运算错误标志M8067为ON,不执行指令。

4.浮点数三角函数运算指令

浮点数三角函数运算指令包括浮点数SIN(正弦)运算、浮点数COS(余弦)运算和浮点数TAN(正切)运算指令,应用指令编号分别为FNC 130~132,均为32位指令。(www.xing528.com)

这些指令用来求出源操作数指定的浮点数的三角函数,角度单位为弧度,结果也是浮点数,并存入目标操作数指定的单元。源操作数应满足0≤角度≤2π,弧度值=π×角度值/180°。

5.二进制浮点数运算指令的仿真实验

打开随书光盘中的例程“浮点数运算”后,打开GX Simulator,启动软元件监视视图,生成X窗口和D窗口。选中D窗口后,将显示方式设为“实数”,用十进制小数的格式设置图4-64中各条指令的浮点数源操作数的值,分别双击X窗口中的X0~X3,使它们变为ON,检查运算结果是否正确。

分别设置ESQR指令的源操作数为K100、K-100和D24,用软元件监视视图的D窗口输入D24的浮点数值(用十进制小数输入),在X5为ON时,观察指令ESQR的执行结果。

6.三角函数运算举例

浮点数三角函数运算指令中的源操作数是以弧度为单位的浮点数。应先将以度为单位的角度值乘以π/180.0(0.01745329),转换为弧度值后,再使用三角函数运算指令。

图4-65的D52中是以0.1°为单位的整数角度值,计算出它的浮点数正弦值后,用(D60,D61)保存。程序右边的注释是作者添加的,指令下面的蓝色数字是各操作数的监视值。

978-7-111-40437-8-Chapter04-80.jpg

图4-65 浮点数运算程序

图4-62用十进制浮点数的格式输入圆周率π,需要两条MOV指令和一条DEBIN指令,比较麻烦。本例只用一条浮点数除法指令DEDIV输入角度转换系数(π/180.0= 314159/18000000)。与十进制浮点数相比,它的另一优点是提高了常数的精度。十进制浮点数的有效位数为4位,用DEDIV输入的二进制浮点数常数的精度相当于6位有效数字的十进制数。

仿真时打开软元件批量监视视图(见图4-66左边的图),设置从D50开始监视,监视形式为多点字,显示格式为32位整数。单击监视开始按钮 978-7-111-40437-8-Chapter04-81.jpg ,各32位整数的值均为0。双击其中的(D52,D53),用出现的“软元件测试”对话框设置以0.1°为单位的整数角度值为300(即30°,见图4-66右边的图)。

在位软元件区输入X4,单击“强制ON”按钮,X4被强制为ON,其常开触点接通一个扫描周期,图4-65中的指令被执行。将软元件批量监视视图中的显示格式改为“实数(单精度)”,从图4-66可以看出,(D50,D51)中的系数π/180.0为0.017 453,(D58,D59)中的弧度值为0.523 598,(D60,D61)中的sin30°的值为0.500 000。

978-7-111-40437-8-Chapter04-82.jpg

图4-66 软元件批量监视视图

读者可以在仿真时将以0.1°为单位的其他整数角度值输入(D52,D53),在X4的上升沿计算出它的正弦值。

FX3G、FX3U和FX3UC新增了角度和弧度相互转换的指令,浮点数运算指令可以直接使用浮点数常数,使三角函数的运算程序大为简化(见4.9.2节的例程)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈