跳转指令的作用是在同一个例程中,变换梯级扫描的顺序,在满足梯级条件下,跳转指令JMP启动跳转动作,与之成对的LBL标号指定了跳转进入的梯级。
跳转指令JMP和标号指令LBL是成对执行的,跳转可以往前跳,根据梯级条件跳过一段梯级不予执行,接着标号之后的梯级继续扫描,这和MCR指令的运用有些相似,但不同的是没有后扫描的处理,不会对非保持型指令做复位操作。
跳转也可以往回跳,构成循环执行。我们在数组指令章节中介绍的FAL所完成的初始化工作是非常简单直观的,在没有FAL指令的情况下,我们就要用跳转指令的循环作用来完成了。如图11-7所示的梯级逻辑就是这样一个实例,这也是一种经典的用法,在传统产品的程序中常常可以遇到。
梯级逻辑要完成的初始化工作是:
●清除实数数组(10个元素);
●清除双整型数组(20个元素);
●清除计时器数组ACC值(20个元素);
●清除计数器数组ACC值(15个元素)。(www.xing528.com)
例程的第一次扫描,S∶FS常闭位输入指令梯级条件成立。首先,在梯级完成一般的清除工作,对实数数组和双整型数组采用FLL指令,充填0实现数组清零。同时清除下面梯级将要使用的指针,令指针从0开始计数,这个指针将指向清除对象计时器和计数器累加值的元素序号。
下面的梯级进入A跳转,这是返回跳转,这段梯级逻辑反复执行20次才会离开。每当循环一次,清除指针Clear_Position加1。计数器清零在循环15次之后,梯级条件不成立而不再操作,计时器清零工作则继续余下的5次循环,直到条件判断指针不满足小于等于20,梯级条件的不成立,不再执行A跳转,接着下面梯级的扫描,从而结束跳转循环。
例程的第二次扫描就因S∶FS常开位输入指令梯级条件成立,B跳转直接跳过,执行后面的梯级逻辑扫描,此属于往前跳转的实例。
注意到完成这些工作,此段梯级逻辑用了标号A和标号B的两对跳转指令。
图11-7 跳转循环清除数组数据
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。