西门子对于寻址分为绝对寻址,相对寻址。绝对寻址入。 DB1.DBX1.0 DB1.DBB2. DB1.DBW4 是不需要用OPN指令的。比如使用相对寻址就要用OPN指令。因为西门子规定了DB1.DBW[AR1.P#0.0]这样是不允许的。只能先打开DB1,在对数据位,字节,字,双子进行操作。 OPN DB1, L DBW[AR1,P#0.0]可以同时打开一个共享数据块,一个背景数据块。举个例子吧,假如我从PIW272开始 一直到PIW286的数据读出写入DB1.的第0个字开始到14字的数据块里面。用32为指针加循环指令,就会使用OPN指令。
LAR1 P#272.0 //装入指针272.0到地址寄存1
LAR2 P#0.0 //装入指针0.0到地址寄存器2
OPN DB1 //打开数据块对DB1作为共享数据块
L 8 //载入循环次数8
FOR: T MW100 //保存到MW100
L PIW[AR1,P#0.0] //载入PIW地址寄存器1,偏移0的地址,
T DBW[AR2,P#0.0] //载入PIW地址寄存器2,偏移0的地址,
TAR1 //AR1 TO ACCU1
L P#2.0 //偏移2个字节
+D //双字想加
LAR1 //保存到AR1
TAR2 //AR2 TO ACCU1
L P#2.0
+D
LAR2
L MW100 // 载入循环次数到ACCU1
LOOP FOR //跳到标签FOR出循环,美循环一次对ACCU1减一,一直到0,跳出循环。