6.跳转
<p>脚本支持流程控制(跳转),可内部跳转或向后一个脚本跳转
目前支持以下跳转指令</p>
<pre><code> JZ //jump if (REG == 0) 参数值为0跳转,否则向下执行
JNZ //jump if (REG != 0) 参数值不为0跳转,否则向下执行
JC //jump if (CY == 0) 参数CY值为0跳转,否则向下执行
JNC //jump (if CY != 0) 参数CY值不为0跳转,否则向下执行
CJNE //CY = (REG1 < REG2);jump if (REG1 != REG2) 如果REG1小于REG2则置位CY否则清零,如果不相等则跳转,否则向下执行
DJNZ //jump if (--REG != 0) REG先减一,如果不为零跳转,否则向下执行</code></pre>
<p>可以使用更易用的 SET_FLAG 将目标地址写入寄存器,然后使用 JUMP_TO_FLAG 直接跳转到寄存器存储的地址而不需要计算地址</p>
<h3>几个例子:</h3>
<h5>短按输出A长按输出B</h5>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b94bf8e2565284c766fa061b58b47ea2&file=file.png" alt="" />
解析:当按下按键后脚本会启动,然后首先延时等待200毫秒再次检查按键按下状态(IO是按键状态,按下为0),如果仍然按下则识别为长按并跳转到(R0)保存的地址以输出B。否则继续执行输出A并退出
虽然此时(R0)并未赋值,但其默认值是0,程序会自动向后搜索直到SET_FLAG。</p>
<h5>局部循环</h5>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7924811de0733bbb794ee6dcfe9249f1&file=file.png" alt="" />
次数的参数也可以通过按键传入</p>