本人用s7-300编程时,发现有一段程序不能工作,然后改了一下正常了,但本人觉得两段程序应该一样,百思不得其解,请大师指教了,程序如下:
源程序
...
begn: LAR1 P#DBX 20.0
LAR2 P#DIX 68.0
L DIB 0 //注:循环次数 >2
L 0
-I
JMZ QUIT
NEXT: T #cnt //循环计数
L W [AR2,P#0.0]
T W [AR1,P#0.0]
L W [AR2,P#2.0]
T W [AR1,P#8.0]
L P#4.0
+AR2
L P#50.0
+AR1
L #cnt
LOOP NEXT
quit:...
该段程序把数据从一个数据块读入另一个数据块,但实际运行发现只有两个字的数据被读取了,和循环次数只有一次的情形差不多,(但循环次数不只一次),改动之后
程序如下
...
begn: LAR1 P#DBX 20.0
LAR2 P#DIX 68.0
L DIB 0 //注:循环次数 >2
L 0
-I
JMZ QUIT
NEXT: T #cnt //循环计数
L W [AR2,P#0.0]
T W [AR1,P#0.0]
L W [AR2,P#2.0]
T W [AR1,P#8.0]
// L P#4.0
+AR2 P#4.0
// L P#50.0
+AR1 P#50.0
L #cnt
LOOP NEXT
quit:...
这段程序是正常的!但两个程序的不同仅在于用+AR1 p#xx.x 替换了
L p#xx.x
+AR1
这有区别吗?