在STEP7中可以对整数、长整数和实数进行加、减、乘、除算术运算。算术运算指令在累加器1和2中进行,在累加器2中的值作为被减数或被除数。算术运算的结果保存在累加器1中,累加器1原有的值被运算结果覆盖,累加器2中的值保持不变。CPU在进行算术运算时,对RLO不产生影响。然而算术运算指令对状态字的CC1和CC0、OV、OS位产生影响。可以用位操作指令或条件跳转指令,对状态字中的标志位进行判断操作。
1.整数算术运算
整数算术运算指令包括:
指令“+I”:将累加器1、2低字中的16位整数相加,16位整数结果保存在累加器1低字中。
指令“-I”:将累加器2低字中的16位整数减去累加器1低字中的内容.结果保存在累加器1中。
指令“*I”:将累加器1、2低字中的16位整数相乘,结果为32位整数保存在累加器1中。
指令“/I”:将累加器2低字中的16位整数除去累加器1低字中的内容,商为16位整数并保存在累加器1低字中,余数存放在累加器1高字中。
指令“+D”:将累加器1、2中的32位整数相加,32位整数结果保存在累加器1中。
指令“-D”:将累加器2中的32位整数减去累加器1中的内容,结果保存在累加器1中。
指令“*D”:将累加器1、2中的32位整数相乘,结果为32位整数保存在累加器1中。
指令“/D”:将累加器2中的32位整数除以累加器1中的内容,商为32位整数并保存在累加器1中.余数被忽略。
指令“MOD”:将累加器2中的32位整数除以累加器1中的内容,余数保存在累加器1中,商被忽略。
指令“+”:累加器1中加一个16位或2位整数常量,结果保存在累加器中。
2.实数算术运算
实数算术运算指令包括:
指令“+R”:将累加器1、2中的32位实数相加,32位结果保存在累加器1中。
指令“-R”:将累加器2中的32位实数减去累加器1中的内容,结果保存在累加器1中。
指令“*R”:将累加器1、2中的32位实数相乘,32位乘积保存在累加器1中。
指令“/R”:将累加器2中的32位实数除去累加器l的内容,32位的商并保存在累加器中。
指令“ABS”:对累加器]中的32位实数取绝对值。
3.梯形图算术运算方块指令
以上介绍的语句表运算指令,都有对应的梯形图方块指令。在编程器上,使用梯形图指令浏览器,可以选择需要的方块指令。下面举例说明算术方块指令的用法。
【例5-5】 编写实现MD4= (IW0+DBW3)×15/MD 0运算的程序。
【解】 图5-18给出了一个实现上述运算的梯形图程序。
图5-18 算术运算方块指令
实现相同运算的语句程序如下:
L IW 0 ∥将输入字IW0的内容装入累加器1
L DBW 3 ∥将数据字DBW3的内容装入累加器1中,累加器1原内容装入累加器2中
+I ∥累加器2与累加器1相加,结果存入累加器1中
L +15 ∥将常数15装入累加器1,累加器1原内容装入累加器2
*I ∥累加器2与累加器1相乘,结果为长整数在累加器1中
L MD 0 ∥将存储双字MD 0的内容装入累加器1,累加器1原内容装入累加器2
/I ∥累加器2除累加器1,结果的整数部分在累加器1中
T MD 4 ∥将运算结果传送至存储双字MD4