📱 手机上看不到完整课程(数字人讲师需要电脑浏览器的 3D 支持)。下面是这节课的图文讲解 + 音频,内容完全一样,手机上也能完整学完。想体验完整课程,用电脑打开这一页即可。
仍然在手机上试试完整课程
本节要做什么:传送不是只有一条 MOV
0:29传送:原样搬一份
- 十来条名字长得像,分工其实很清楚
- 把 D0 的数搬到 D10原样抄一份,一个格子对一个格子
- 改成 250源头一变,目标跟着变
- 数据不变化条件断开是保持原样,不是清成零
传送:原样搬一份
前面十几课,数据都是算出来的。这一节讲怎么把它搬走。传送家族的指令有十来条,名字长得像,分工其实很清楚。先看最基本的一条:把 D0 的数搬到 D10,D0 是多少,D10 就是多少,原样抄一份。现在把源头改成 250,目标跟着变 250。手册还特意提醒一句,条件断开的时候数据不变化,是保持原样,不是清成零。
块搬:一次搬一摞,一个萝卜一个坑
0:28块搬:一摞整体搬过去
- 一次搬一摞BMOV 把一片软元件整体搬过去
- 一个萝卜一个坑四个各不相同的数,搬过去各自对上号
- 改成 77只有第一格跟着变,后面三格不动
- 点数写几就搬几格源和目标一一对应
块搬:一摞整体搬过去
一条一条搬太慢,所以有块传送:BMOV,一次搬一摞。图上这条把 D0 开头的四个格子,整体搬到 D10 开头。注意看过程:源头是四个各不相同的数,搬过去以后各自对上号,一个萝卜一个坑。现在把源头的第一个数改成 77,只有目标的第一格跟着变,后面三格还是原来的数,点数写几就搬几格,源和目标一一对应。
铺开:一个数复制一片(最容易跟块搬混的一条)
0:32铺开:一个数复制四格
- 只差一个字母FMOV 与 BMOV 名字只差一字母,源也一模一样
- 四格全是一模一样的十一它只认源的那一个值,复制几份铺开
- 四个格子一起变这正是与上一帧最大的区别
- 别弄反搬一摞不同的数用 BMOV,铺满一片用 FMOV
铺开:一个数复制四格
接下来这条最容易跟块传送混,因为名字只差一个字母:FMOV,多点重复传送。它跟刚才那一条,程序里只有一个字母不一样,源头的数也完全一样。可是结果差得远:它只认源的那一个值,然后复制几份铺开,目标四格全是一模一样的十一。再把源头改成 77,这回是四个格子一起变。要搬一摞不同的数用 BMOV,要把一个数铺满一片用 FMOV,别弄反。
批量:一片全置上、一片全清掉
0:30批量:一片置上、一片清零
- 按一下 X0MSET 一次把 M10 到 M13 全部置上
- 区间外的两位不动它只碰区间内,区间外一个都不动
- 起点和终点不是起点和个数 —— 写法跟块传送不一样
- 初始化数据区按一下 X1,ZRST 把这一片全清零
批量:一片置上、一片清零
前面几条搬的都是数据,位元件也能整片操作。按一下 X0,MSET 一次把 M10 到 M13 全部置上,只碰这个区间,区间外的两位不动。这里要留意,它的两个参数是起点和终点,不是起点和个数,写法跟块传送不一样。按一下 X1,ZRST 把 D20 到 D29 这一片数据全部清零,程序开头初始化数据区经常用它。
就地调头:一个寄存器内部换高低字节
0:29高低字节:一个寄存器内部对调
- 调个个儿高八位与低八位换位置
- 就地改自己指令里只写一个软元件,不往外送
- 3053618551 换完变成 30536
- 再按一下又换回来边沿触发,按一下换一次
高低字节:一个寄存器内部对调
换一个方向的问题:一个十六位寄存器里装着高八位和低八位两组数据,想把它俩调个个儿。SWAP 就是干这个的,指令里只写一个软元件,它就地改自己,不往外送。手册举的例子很好记:原来的数是 18551,换完变成 30536。要留意它是边沿触发的,现场都配上升沿的触点,按一下换一次,再按一下又换回来。
两个对调:XCH 与 SWAP 的分界 + 本课收尾
0:33两个寄存器整体对调
- 整体对调XCH 把两个寄存器的内容互换
- 数变了SWAP 是寄存器内部换高低字节,值变了
- 挪了地方XCH 各家的数一个都没变,只是换了位置
- 都见过了块搬、铺开、批量、交换
两个寄存器整体对调
最后一条 XCH,是把两个寄存器的内容整体对调。它跟刚才的 SWAP 名字很像,做的事情完全不一样:SWAP 是在一个寄存器内部换高低字节,数变了;XCH 是在两个寄存器之间换位置,各家原来的数一个都没变,只是挪了地方。图上按一下,一百和二百换了个位置,再按一下又换回来。传送家族到这里,块搬、铺开、批量、交换就都见过了。