左移和右移指令的功能是将输人数据IN左移或右移N位,其结果送到OUT中。
使用移位指令时应注意以下问题。
1)左移和右移指令中,字节操作是无符号的;对于字和双字操作,当使用有符号数据类型时,符号位也将被移动。
2)在移位时,存放被移位数据的编程元件的移出端与特殊继电器人SM1.1相连,移出位送入SM1.1,另一端补0。
3)移位次数N为字节型数据.它与移位数据的长度有关。如果N小于实际的数据长度,则执行N次移位;如果N大于数据长度,则执行移位的次数等于实际数据长度的位数。
4)左、右移位指令对特殊继电器的影响是,结果为零时置位SM1.0、结果溢出时置位SM1.1。
5)运行时出现不正常状态量位SM4.3.ENO=0。
移位指令包括字节、字、双字移位指令,其指令格式类似。这里仅介绍字节移位指令。字节移位指令包括字节左移指令SLB和字节右移指令SPB.指令格式如图5-32所示,其中N≤8。
图5-32 字节移位指令的指令格式
当EN有效时,字节移位指令将字节型数据IN左移或右移N位后,送到OUT中。在语句表中,OUT和IN为同一存储单元。
对于字移位指令、双字移位指令,只是把字节移位指令中表示数据类型的“B”改为“W”或“DW (D)”,N值取相应数据类型的长度即可。
【例5-15】 利用移位指令将ACO字数据的高8位右移到低8位,输出给QB0.程序如图5-33所示。
图5-33 逻辑运算指令应用示例