我在例子程序中看到如下程序:
NetWork2:
A(
L #OB40_MDL_ADDR
T MW 10
SET
SAVE
CLR
A BR
)
JNB _001
L #OB40_POINT_ADDR
T MD 12
_001: NOP 0
把其转化成LAD理解其意思就是两个move块串联,意思就是
L #OB40_MDL_ADDR
T MW 10
如果结果没有错误,在执行:
L #OB40_POINT_ADDR
T MD 12
可是小弟单从语句表来分析却怎么也分析不出来执行以下语句:
L #OB40_POINT_ADDR
T MD 12
从语句表来分析,请问整个程序是怎么执行的啊?
而且我现在对JNB指令也很迷惑,《语句表参考手册》中是这么说的:
{
如果逻辑运算结果为“1”,则不执行跳转。RLO 被置为“1”,程序扫描从下一
语句继续。
RLO 被拷贝到该指令的 BR 中,与 RLO 无关。
}
我理解的意思就是在rlo为0时跳转,将0拷贝br中,如果rlo为1,则不跳转。但是,是不是也把1拷贝到br中呢??这点是一个问题,请指教。
奇怪的是我在一本书中,它是这样说的:当rlo为0,且br为1时跳转。
请问到底哪个说的是正确的?还是我没有理解到这两个说法是一样的。
我在看例子的程序时,经常看见都用到br位,请问斑竹和高手们在编程时也那么用吗?还是就是由LAD转成STL时而成的固定形式,如果不是,那是出于别的特殊的考虑呢?
如果单从语句表理解,感觉特饶圈子,不知道这么用到底有什么特殊的用意。
如上的程序,为什么不这样写:
L #OB40_POINT_ADDR
T MD 12
L #OB40_POINT_ADDR
T MD 12
请斑竹,高手耐心,细心的帮帮忙解答一下,小弟感激不尽。