请问STL语言编程中,JC跳转指令前用AN OV,为什么不用A OV呢?谢谢了!
最佳答案
JC跳转指令前用AN OV,为什么不用A OV呢?
根据实际的逻辑判断需要,并非都是用AN OV。有时也用A OV。
1、先举一例:
OPN DB17// 打开数据块 DB17。
L DBD0// 数据双字 DBD0 的值装入累加器 1 中。(该值必须为浮点数格式)。
SQR// 在累加器 1 中求浮点数(32 位,IEEE FP)的平方。结果保存到累加器 1 中。
AN OV/ /扫描状态字中的 OV 位是否为“0”。
JC OK// 如果在 SQR 执行过程中没有出现错误,则跳转到 OK 跳转标号。
BEU// 如果在 SQR 执行过程中出现错误,则块无条件结束。
OK: T DBD4// 将累加器 1 中的内容(结果)传送到数据双字 DBD4。
2、再说JC指令:
JC 若 RLO = 1,则跳转。
a、执行过程中没有出现错误,则跳转:
上述例子中的开方指令SQR,如果在执行过程中出现错误则OV 位置位。为了判断执行过程中没有出现错误就应用了AN OV。即,如果 OV没有置位,则RLO = 1。
b、执行过程中出现错误,则跳转:
如果程序修改为执行过程中出现错误,则跳转:
OPN DB17// 打开数据块 DB17。
L DBD0// 数据双字 DBD0 的值装入累加器 1 中。(该值必须为浮点数格式)。
SQR// 在累加器 1 中求浮点数(32 位,IEEE FP)的平方。结果保存到累加器 1 中。
A OV/ /扫描状态字中的 OV 位是否为“0”。
JC ERR// 如果在 SQR 执行过程中出现错误,则跳转到 ERR 跳转标号。
T DBD4//如果没有错误, 将累加器 1 中的内容(结果)传送到数据双字 DBD4。
ERR:BEU// 如果在 SQR 执行过程中出现错误,则块无条件结束。
提问者对于答案的评价:
谢了我明白了!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc248987.html