发布于 2013-12-09 16:52:30
4楼
TAR1 #TEMP0
TAR2 #TEMP1
......
LAR1 #TEMP0
LAR2 #TEMP1
//第一句TAR1 #TEMP0 把AR1的值传给#TEMP0,倒数第二句LAR1 #TEMP0 是把#TEMP0的值传给AR1
//这么做的目的是执行中间的循环程序之后,保持AR1的值不变,这样保证程序调用此子程序后AR1的值不变,寻址正确。
//如“n次看你的背影”所说只是在进入子程序对原来指针数据的保护。
L 5
M001: T #TEMP2
.....
M002: L #TEMP2
LOOP M001
// LOOP是循环指令,具体用法可看帮助或手册,意思是对中间的程序循环执行5次
L #TEMP2
SLD 4
LAR1
//给AR1赋值,执行5次的值分别是P#10.0(80),P#8.0(64),P#6.0(48),P#4.0(32),P#2.0(16)
L #TEMP2
+ 100
T #TEMP4
OPN DB [#TEMP4]
L DBW 0
L DBW 14
<>I
JC M002
OPN "Previous Sequence Number"
L DBW [AR1,P#0.0]
==I
JC M002
OPN DB [#TEMP4]
L DBW 2
OPN "Vehicle Locations"
T DBW [AR1,P#0.0]
OPN DB [#TEMP4]
L DBW 4
OPN "Vehicle Destinations"
T DBW [AR1,P#0.0]
OPN DB [#TEMP4]
L DBW 6
OPN "Vehicle Status"
T DBW [AR1,P#0.0]
OPN DB [#TEMP4]
L DBW 8
OPN "Vehicle Inputs"
T DBW [AR1,P#0.0]
OPN DB [#TEMP4]
L DBW 10
OPN "Vehicle Error Conditions"
T DBW [AR1,P#0.0]
OPN DB [#TEMP4]
L DBW 12
OPN "OperatorRequests"
T DBW [AR1,P#0.0]
OPN DB [#TEMP4]
L DBW 14
OPN "Previous Sequence Number"
T DBW [AR1,P#0.0]
此段程序是对不同DB块的数据进行比较和赋值。