下面有段程序,看了一段时间还是不能读懂每一步,请各位大侠能够指点,最好是较详细地标出每步的意思,非常感谢!注:该段程序实现的功能是每个位置(位置的范围是1—410)取出相应的DB数值(数值为int,起始位置dbw0)后减去一个修正值再送出去,#OVEN_1_ADRESS为(局域ANY型);network2里的比较指令正常情况下都不满足(为0)不跳转。比较疑惑的是寄存器间接寻址处,该段指令并没有指向DB块的地址指针,它是如何能找到对应地址的 。
network1:
L P##OVEN_1_ADRESS
LAR1
L D [AR1,P#6.0]
T #BEREICHSZEIGER
L #BEREICHSZEIGER
SRW 3
T #WORT_NR
network2:
O(
L #ACTUAL_POS_NR
L 1
)
O(
L #ACTUAL_POS_NR
L 410
>I
)
JC ENDE
network3:
L #ACTUAL_POS_NR
L 2
*I
L 2
-I
L #WORT_NR
+I
T #WORT_NR
network4:
ENDE: L W [AR1,P#4.0]
T #DB_NR
OPN DB [#DB_NR]
network5:
LAR1 P#DBX 0.0
L #WORT_NR
SLW 3
+AR1
L DBW [AR1,P#0.0]
T #IND_CYL_POS
network6:
L #IND_CYL_POS
L #IND_POS_OFFSET
-I
T #IND_CYL_POS