移位操作指令都是对无符号数进行处理,包括移位指令、循环移位指令和寄存器移位指 令,执行时只需考虑被移位存储单元的每一位数字状态,而不用考虑数据值的大小。该类指令在一个数字量输出端子对应多个相对固定状态的情况下有广泛的应用。
移位指令有右移和左移两种,根据所移位数的长度分别又可分为字节型、字型和双字型。 移位指令的梯形图和语句表如图所示。移位数据存储单元的移出端与SM1.1 (溢出位)相连,最后被移出的位被放到SM1.1位存储单元。_W和SHR_DW为字节、字和双字右移标识符;相应地SHL_B、SHL_W、SHL_DW为字节、字和双字右移标识符;EN为移位允许信号输入端(数据类型为BOOL型ENO为功能框允许输出端(数据类型为BOOL型);IN为移位数据输入端(数据类型为BYTE型、WORD型或DWORD型);OUT为移位数据输出端(数据类型为BYTE型、WORD型或DWORD型),N为移位次数输入端 (数据类型为BYTE型移位指令中各有效操作数的寻址范围如表所示
移位时,移出位进入SM1.1,另一端自动补0。SM1.1始终存放最后一次被移出的位, 移位次数为N,如果所需移位次数大于移位数据的位数,则超出次数无效。如果移位操作使数据变为0,则SM1.0(零存储器位〕自动置位。当移位允许信号EN=1时,被移位数IN根据移位类型相应的右移或左移N位,最左边或最右边移走的位依次用0填充,其结果传送到OUT中〈在语句表中,IN与0UT使用同一个单元〉。字节、字和双字移位的最大实际可移位次数分别为8、16、32。
(转载)