十六、select,选择指令。G可以是变量选择性赋值。
G不是固定的数字,而是可以变化的变量,所以能实现 “根据变量的值,给目标变量选不同的值赋值” → 这就是你说的 “G 可以是变量选择性赋值”,也是这个指令的核心优势。
MUX,multiplex多路复用,选择用那一路的IN值,IN0,IN1,IN2,一个OUT,一个ELSE
ENO使能输出Enable Output'
DEMUX。多路分用,输入值选择给几路用.OUT0,OUT1,ELSE
十七、SHR,右移
SHR是汇编逻辑指令shift logical right)
shift是转移的意思
无符号数,填充0,有符号数,填充符号。比如前边是负数,就填充1,正数,填充0
MW70,最高位M70.7,最低位M70.0
MW70的起始位M70.7
Int是有符号,最高位是符号位
十八、程序段并联,分叉的方法,拉出空功能框到程序段下方,有加号后 放手,删除空功能框。就可以用其他替代,如果复制上方P等信息,需要用复制口令。
十九、ROL(Rotate Left):将操作数的二进制位向左循环移动,移出的高位会补到低位空出的位置。
ROR(Rotate Right):将操作数的二进制位向右循环移动,移出的低位会补到高位空出的位置。
常见后缀(数据类型)
_B:Byte(字节,8 位)
_W:Word(字,16 位)
_D:DWord(双字,32 位)
二十、ROL/ROR(循环移位) 与 SHL/SHR(普通移位)区别:假设操作数是字节 VB0 = 16#81(二进制 1000 0001):
ROL_B VB0, 1(循环左移 1 位):
最高位1移出 → 补到最低位 → VB0 = 16#03(二进制 0000 0011)。
SHL_B VB0, 1(普通左移 1 位):
最高位1移出丢弃 → 最低位补 0 → VB0 = 16#02(二进制 0000 0010)。
总结
循环移位(ROL/ROR):重点是 “循环”,移出的位会回到另一侧,无数据丢失,适合需要重复利用所有位的场景(如循环指示灯、状态轮转)。
普通移位(SHL/SHR):重点是 “移位”,移出的位直接丢弃,补 0 填充,适合数值运算(如快速乘 / 除 2)或提取特定位。
两者指令后缀完全一致(_B/_W/_D),仅核心逻辑不同,使用时需根据是否允许数据丢失选择对应指令。