先来看一下JL指令引起的缺点吧:
FC1中由于JL指令保存时候提示有缺点
首先说一句,这个程序是不严谨的,这里只用来解释报错问题,大家不要纠结!
图中有JC指令和JL指令,为何我说不能保存的缺点是JL指令造成的呢?

先来说一下这个JC指令,这个指令是根据上一条指令产生的逻辑运算结果(RLO)来判断是否跳转的,整数比较指令(>=I)条件成立的时候就会使状态字的RLO=1进而去激活JC跳转指令。
再来说一下JL指令,JL指令便是跳转到标号指令,但是JC指令也是跳转到标号指令(循环跳转指令的标号标签大家可以视为是一样的,实在我个人更习气叫标签,但是本日这个编程手册上写的标号)。
那么JC和JL有何不同呢?最大的不同便是JL跳转指令实在是有一个跳转列表的,或者说叫跳转目标列表!
这个目标列表最大许可包含256个条款,意思是可以跳转到0-255个标号(标签)处。
之前图片上的缺点是“跳转分配器:可能丢失的跳转目标之前存在造孽语句。”我在STEP7的帮助文件中搜索“跳转分配器”没有搜索到结果,但是我在一些干系的资料上先容JL指令的时候也有提到“跳转分配器”这个词,而且我把JL指令比如修正成JU无条件跳转指令就没有再报错了,我就不上传图片了。--基于这2点,我才说程序不能保存是由于JL指令造成的,我后续的解释中大家会理解,这里确实是JL指令用法缺点!
大家可以把这个当作一个履历,往后如果碰着同样的“跳转分配器”缺点造成程序不能保存,该当首先去查看一下JL指令是不是不该用,或者说用错了。
缺点的缘故原由剖析完了,还是来看一下这个JL指令的用法:
JL指令的运用举例1
这是我在OB1中写的一段程序,上部分程序终极是为了掌握MB0的,下部分便是JL跳转指令和JU合营利用时候,相称于JU指令处产生了一个清单,MB0的值掌握访问这个清单中的哪个项目。
下边来看一下该程序的运行监控图:
JL指令的运用举例1的监控图1
这个图片中可以看出MW20=111时,MB0=0,程序跳转到boy0处,把20通报给了MD4。其他的数值也都好理解,我就不再复述了,来说一下MW20=0的时候,也便是程序刚刚下载到CPU中后,为何MB0=3 ? 缘故原由是MW20=0的时候,程序上半部分没有一处跳转都顺序实行下来,末了是把3装入了MB0中,故MB0=3就使得JU程序跳转到boy3处,MD4=50。
JL指令的运用举例1的监控图2
这个图片MW20=333和444继而跳转到对应的标号处。程序看明白后,就再来强调一些知识点,帮助文件强调“跳转目标指令列表必须包含JU指令”,这里再次强调了列表,以是JL指令可以换一种说法,便是JL指令是跳转到与之合营的JU指令列表的一种跳转指令,该当说这样描述才更完全!
同时可以看出JL指令是不受任何状态字或者位的掌握的。JL跳转指令和LOOP指令一样,都只能在一个块里边跳转,且跳转的标号(标签)比如boy3,西门子规定只能是4个字符,且首字符必须是字母,还区分大小写!
--这是一些常规的哀求。
用法和一些规定说完后,为了加深大家的印象,再来看一个程序:
JL指令的运用举例2
这个程序是我把之出路序的上半部分删除,MB0也不用了,直接用L 2把2装入了ACCU1中,可以看到MD4=40, 就表示程序实行了boy2这个标签行的程序。我用断点调试的方法,监测程序也是直接从L 2这行跳转到JU boy2这行程序的。以是说,MB0也不是必须,但是如果没有MB0,那么此时ACCU1-L中的值,便是将要跳转到的清单的条款号。不过,为了调试时候更直不雅观,这里还是建议利用一个变量来存储ACCU1-L中的值。
至此,程序不能保存报错的缘故原由阐明了,JL合营JU利用的方法和一些规定也阐明了,相信本文能让大家对JL指令有一些更深入的认识,能够帮到小伙伴们是我的荣幸,感谢阅读!
如果以为本文对您有用,请关注+收藏。如果有问题,请关注+留言,我会第一韶光回答,感激!