算术运算指令1. 整数与双整数加减法指令整数加法(ADD-I)和减法(SUB-I)指令是:使能输入有效时,将两个16位符号整数相加或相减,并产生一个16位的结果输出到OUT。 双整数加法(ADD-D)和减法(SUB-D)指令是:使能输入有效时,将两个32位符号整数相加或相减,并产生一个32位结果输出到OUT。 整数与双整数加减法指令格式如表5-14所示。 表5-14 整数与双整数加减法指令格式
说明: (1)当IN1、IN2和OUT操作数的地址不同时,在STL指令中,首先用数据传送指令将IN1中的数值送入OUT,然后再执行加、减运算即:OUT+IN2=OUT、OUT-IN2=OUT。为了节省内存,在整数加法的梯形图指令中,可以指定IN1或IN2=OUT,这样,可以不用数据传送指令。如指定INI=OUT,则语句表指令为:+I IN2,OUT;如指定IN2=OUT,则语句表指令为:+I IN1,OUT。在整数减法的梯形图指令中,可以指定IN1=OUT,则语句表指令为:-I IN2,OUT。这个原则适用于所有的算术运算指令,且乘法和加法对应,减法和除法对应。 (2)整数与双整数加减法指令影响算术标志位SM1.0(零标志位),SM1.1(溢出标志位)和SM1.2(负数标志位)。 【例5-11】求5000加400的和,5000在数据存储器VW200中,结果放入AC0。程序如图5-17所示。
LD I0.0 MOVW VW200, AC0 //VW200→AC0 +I +400, AC0 //VW200+400=AC0
图5-17 例5-11题图 2. 整数乘除法指令整数乘法指令(MUL-I)是:使能输入有效时,将两个16位符号整数相乘,并产生一个16位积,从OUT指定的存储单元输出。 整数除法指令(DIV-I)是:使能输入有效时,将两个16位符号整数相除,并产生一个16位商,从OUT指定的存储单元输出,不保留余数。如果输出结果大于一个字,则溢出位SM1.1置位为1。 双整数乘法指令(MUL-D):使能输入有效时,将两个32位符号整数相乘,并产生一个32位乘积,从OUT指定的存储单元输出。 双整数除法指令(DIV-D):使能输入有效时,将两个32位整数相除,并产生一个32位商,从OUT指定的存储单元输出,不保留余数。 整数乘法产生双整数指令(MUL):使能输入有效时,将两个16位整数相乘,得出一个32位乘积,从OUT指定的存储单元输出。 整数除法产生双整数指令(DIV):使能输入有效时,将两个16位整数相除,得出一个32位结果,从OUT指定的存储单元输出。其中高16位放余数,低16位放商。 整数乘除法指令格式如表5-15所示。www.plcs.cn 整数双整数乘除法指令操作数及数据类型和加减运算的相同。 整数乘法除法产生双整数指令的操作数:IN1/IN2:VW, IW, QW, MW, SW, SMW, T, C, LW, AC, AIW, 常量, *VD, *LD, *AC。数据类型:整数。 OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC 。数据类型:双整数。 使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出),SM1.3(除数为0)。 对标志位的影响:SM1.0(零标志位),SM1.1(溢出),SM1.2(负数),SM1.3(被0除)。 表5-15 整数乘除法指令格式
【例5-12】乘除法指令应用举例,程序如图5-18所示。
LD I0.0 MUL AC1 VD100 DIV VW10 VD200
图5-18 例5-12题图 注意:因为VD100包含:VW100和VW102两个字,VD200包含:VW200和VW202两个字,所以在语句表指令中不需要使用数据传送指令。 3. 实数加减乘除指令实数加法(ADD-R)、减法(SUB-R)指令:将两个32位实数相加或相减,并产生一个32位实数结果,从OUT指定的存储单元输出。 实数乘法(MUL-R)、除法(DIV-R)指令:使能输入有效时,将两个32位实数相乘(除),并产生一个32位积(商),从OUT指定的存储单元输出。 操作数:IN1/IN2: VD, ID, QD, MD, SMD, SD, LD, AC, 常量, *VD, *LD, *AC。 OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC 。 数据类型:实数。 指令格式如表5-16所示。
表5-16 实数加减乘除指令
【例5-13】实数运算指令的应用,程序如图5-19所示。
LD I0.0 +R AC1, VD100 /R VD100, AC0
图5-19 例5-13题图 4. 数学函数变换指令数学函数变换指令包括平方根、自然对数、指数、三角函数等。 (1)平方根(SQRT)指令:对32位实数(IN)取平方根,并产生一个32位实数结果,从OUT指定的存储单元输出。 (2)自然对数(LN)指令:对IN中的数值进行自然对数计算,并将结果置于OUT指定的存储单元中。 求以10为底数的对数时,用自然对数除以2.302585(约等于10的自然对数)。 (3)自然指数(EXP)指令:将IN取以e为底的指数,并将结果置于OUT指定的存储单元中。 将“自然指数”指令与“自然对数”指令相结合,可以实现以任意数为底,任意数为指数的计算。求yx,输入以下指令:EXP (x * LN (y))。 例如:求23=EXP(3*LN(2))=8;27的3次方根=271/3=EXP(1/3*LN(27))=3。 (4)三角函数指令:将一个实数的弧度值IN分别求SIN、COS、TAN,得到实数运算结果,从OUT指定的存储单元输出。 函数变换指令格式及功能如表5-17所示。 表5-17 函数变换指令格式及功能
使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出)SM4.3(运行时间) 对标志位的影响:SM1.0(零),SM1.1(溢出),SM1.2(负数) 【例5-14】求45º正弦值。 分析:先将45º转换为弧度:(3.14159/180)*45,再求正弦值。程序如图5-20所示。
LD I0.1 MOVR 3.14159, AC1 /R 180.0, AC1 *R 45.0, AC1 SIN AC1, AC0
图5-20 例5-14题图 |