数学运算指令可完成整数、长整数及实数的加、减、乘、除、求余和求绝对值等基本算数运算,32位浮点数的平方、平方根、自然对数、基于e的指数运算及三角函数等扩展算数运算,以及数据的移位和逻辑运算。数学运算指令见表7-12。
表7-12 数学运算指令类型
【例7-11】整数运算指令的应用。
分析:在图7-53中,两个整数相加(5+27),结果32存放在MW2中;若M0.1=1,则将16#FE传送到被除数MD4中,则双整数运算结果(MD4)÷5放入MD8寄存器中,即(MD8)=50;若程序刚开始运行,且M0.1=0,则MD4的初始值是0,由于0除任何数都等于0,所以(MD8)=0。
图7-53 整数运算指令应用示例
【例7-12】浮点数运算指令应用1。
分析:在图7-54中,MUL_R为实数相乘指令,实数2*3.125=6.25,结果存入MD2寄存器中;SQRT为求实数的平方根指令,(9.23)0.5≈3.03809,结果存入MD6寄存器中。
图7-54 浮点数运算指令应用示例1
【例7-13】浮点数运算指令应用2。
分析:观察图7-55。在网络1中,MOD_DI指令对长整型求余数,(49/5)的余数是4,结果存入MD2寄存器中;ABS指令对浮点数取绝对值,︱-5.2︱=5.2,结果存入MD6寄存器中;在网络2中,LN指令用来求浮点数的自然对数,ln10=2.30259,结果存入MD10寄存器中;EXP指令用来求浮点数以e为底的指数值,e2.30259=10,结果存入MD14寄存器中。
图7-55 浮点数运算指令应用示例2
【例7-14】三角函数运算指令应用。
分析:观察图7-56,SIN指令对浮点数(弧度)求正弦值,(π/2)=1.570796,sin((π/2)=1,结果存入MD2寄存器中;ATAN指令对浮点数求反正切值,arctan(-1)=(-π/4)=0.785398,结果存入MD6寄存器中。
(www.xing528.com)
图7-56 浮点数运算指令应用示例
【例7-15】移位指令的应用。
分析:观察图7-57。网络1用于给变量MW2、MW12赋初值;网络2和网络3中,SHR_I/SHR_DI指令用于整数/双整数右移、SHL_W/SHL_DW指令用于对字/双字左移,从而实现移位功能,其中输入N用于指定移位的位数。数据移动1次后的变化如图7-58所示。
图7-57 移位指令应用示例
从图7-58的标注1和标注2数据移位可见,无论是右移还是左移,对于整数为正而言,都是给空出位补N个“0”;从标注3数据移位可见,整数为负且右移时,给空出位补N个“1”。
图7-58 移位一次后的数据对比
【例7-16】循环移位指令应用。
分析:观察图7-59。网络1用于给变量MD2、MD12赋初值;网络2为循环左/右移位指令,用于将输入IN的所有内容向左或向右逐位循环移动,N为移动位数,移位原理如图7-60所示,图7-61为图7-59移动一次后的数据在线监控。
图7-59 循环移位指令应用示例
图7-60 移位指令性能
图7-61 移动一次后的数据对比
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。