📱 手机上看不到完整课程(数字人讲师需要电脑浏览器的 3D 支持)。下面是这节课的图文讲解 + 音频,内容完全一样,手机上也能完整学完。想体验完整课程,用电脑打开这一页即可。
仍然在手机上试试完整课程
跳转:不想跑的那段,一步跨过去
0:33跳转:不想跑的那段,一步跨过去
- 两句都在数X0 没合上时,D0 和 D1 一起往上走
- 一步跨过去读到 CJ 就跳到标号 P1,中间的 INC D0 被整段跨过
- 停在原地D0 不再变,标号后面那句照跑不误
- 全看标号跳到哪、跳过什么,就看 P1 落在哪一行
条件跳转:合上 X0,中间那句被跨过
程序写长了,总有些段落平时不想跑,这时候用条件跳转。X0 没合上的时候,两句 INC 都执行,D0 和 D1 一起往上走。把 X0 合上,程序读到 CJ 就一步跨到 P1 那个标号,中间的 INC D0 整段被跳过去,D0 停在原地不动,标号后面的 INC D1 照跑不误。松开 X0,D0 又接着往上走。跳到哪、跳过什么,全看标号 P1 落在哪一行。
双线圈:同一个输出写两句,靠跳转挑一句
0:34双线圈:靠跳转挑一句生效
- 写了两句同一个 Y0 出现两次,平时算双线圈
- X0 没合上第二个 CJ 跨过最后那句,Y0 听 X1
- 把 X0 合上第一句被跨过,Y0 改听 X2
- 缩短运算周期手册对跳转这种用法的原话
双线圈:Y0 归谁管,看 X0
再看一个实战用法。同一个 Y0 在程序里写了两句,平时这叫双线圈,是不允许的,配上跳转就合法了。X0 没合上的时候,第二个 CJ 跳到 P7,把最后那句跨过去,Y0 听 X1 的,灯是亮的。把 X0 合上,程序开头就跳到 P6,第一句被跨过,Y0 改听 X2;X2 没接通,灯就灭了。把 X2 接上,灯又亮起来。手册上管这叫用跳转缩短运算周期。
子程序:搭在主程序后面,叫一次跑一次
0:35子程序:搭在主程序后面,叫一次跑一次
- 喊一声CALL P10 就是叫子程序来干活
- FEND 是结束线主程序跑到这儿就停,不会滑进子程序区
- 冻着X0 不接通,子程序里那句就一动不动
- SRET 返回子程序干完,从哪叫的就回哪去
CALL 叫一声,SRET 再回来
程序长了,有些活儿好几个地方都要用,就把它单独写成一段子程序,用的时候喊一声。图上 CALL P10 就是喊这一声:X0 接通才喊。子程序挂在 FEND 后面,FEND 是主程序的结束线,跑到那儿就停住,不会顺着滑进子程序区。所以 X0 不接通时 D1 一直冻着;X0 一接通,每扫描一次调一次,D1 就跟着 D0 一起涨。子程序最后那句 SRET,负责返回主程序。
循环:门里那句,一次扫描连跑五遍
0:32循环:门里那句一次扫描连跑五遍
- 一对门FOR 和 NEXT 之间的程序被重复执行
- 按一下加五INC D0 一次扫描连跑 5 遍
- 门外只加一同一次扫描里 INC D1 只执行一次
- 不省时间次数写大了,扫描周期跟着变长
门里加五,门外加一
接下来是循环。FOR 和 NEXT 是一对门,写在门里的程序,一次扫描会连着跑好几遍。图上 FOR K5 就是跑五遍,门里那句 INC D0 一次扫描加五:按一下 X0,D0 从零跳到五,再按一下跳到十。门外那句 INC D1 就不一样,每扫描只加一。所以循环省的是程序长度,不省时间,次数写大了扫描周期跟着变长,手册专门提醒过。
嵌套:门里再开一道门,五次乘六次
0:36嵌套:门里再开一道门
- 门里再开一道门外层 FOR K5,里层分 FOR K6 / FOR K7 两路
- 五乘六X1 通 → 外层 5 轮 × 内层 6 次,D0 涨 30
- 五乘七换成 X2 通 → 5×7,D1 涨 35
- 就近配对哪条 NEXT 配哪个 FOR,一条都不能错
手册 p115 原例:5×6 与 5×7
门里再开一道门,这就是嵌套。手册上这个例子,外面一层 FOR K5,里面分两路:X1 接通走的是 FOR K6,X2 接通走的是 FOR K7。按一下 X0,X1 通着,D0 涨三十,是五乘六。现在把 X1 断开、X2 接通,再按一下 X0,D1 涨三十五,是五乘七。门里再套门,总次数就是两层相乘。哪条 NEXT 配哪个 FOR,看的是就近配对,一条都不能错。
压轴:一个真用得上的循环——给一排数排队
0:33压轴:给一排数排队
- 游标 D21从 0 开始,挨着比、换、再往右挪
- 前面大就换LD> 比较加 XCH 交换,两个数换个位置
- 走四轮外层循环四轮,每轮把最大的顶到最后
- 按一下就排好D1~D5 变成 1、2、3、4、5
手册 p116 原例:双层循环 + 变址排序
最后看一个真用得上的例子,手册拿它给一排数从小到大排队。五个数是倒着放的:五、四、三、二、一。程序用 D21 当游标,从零开始,把挨着的两个数比一下,前面比后面大就换个个儿,游标加一往右挪。外面那层循环走四轮,每一轮把当前最大的数顶到后面去。按一下 X0,五个数就变成一、二、三、四、五。循环次数别写太大,扫描周期会跟着变长。