SIEMENS安徽省豪州市西门子(授权)中国一级代理商
移位和循环移位指令位于指令列表下移位/循环下拉菜单中,根据操作类型可以分为左移位,右移位,循环左移位,循环右移位四大类;根据操作数长度又可以分为字节移位指令,字移位指令,和双字移位指令。此外比较特殊的是,存在一个移位寄存器位指令,下面分别介绍:
01
左右移位指令
移位指令将输入值 IN 的位值,右移或左移 N位后,将结果送入输出 OUT 的存储单元中。
对于每一位移出后留下的空位,移位指令会补零。
如果移位计数 N 大于或等于允许的最大值(字节操作为 8、字操作为 16、双字操作为 32),则会按相应操作的最大次数对值进行移位。
字节操作是无符号操作。对于字操作和双字操作,使用有符号数据值时,也对符号位进行移位。
02
循环左右移位指令
循环移位指令将输入值 IN 的位值,循环右移或循环左移 N位后,将结果送入输出 OUT 的存储单元。
循环移位指令是环形的,即移出的位被移到另一端的空位,同时影响特殊存储器位。
如果循环移位计数大于或等于操作的最大值,CPU 会在执行循环移位前对移位计数执行求模运算以获得有效循环移位计数。
字节操作是无符号操作。对于字操作和双字操作,使用有符号数据值时,也对符号位进行移位。
03
移位寄存器位指令
移位寄存器位指令将位值移入移位寄存器,在指令的三个输入引脚中,S_BIT 指定移位寄存器最低有效位的位置;N 指定移位寄存器的长度和移位方向;DATA 的位值移入移位寄存器。
该指令和上述指令最大的区别在于,移位寄存器不在是以字节,字和双字为单位,而是根据需求自定义的长度单元,移入的数据也不再是补位0或者循环,而是由引脚确定,所以该指令在排序或控制产品流等方面会非常方便。
展开全文
相关产品