移位指令分为左、右移位和循环左、右移位及移位寄存器指令三大类。左移和右移指令的功能是将输入数据IN左移或右移N位后,把结果送到OUT中。主要包括:①字节移位指令,SLB-字节左移指令,SRB-字节右移指令;②字移位指令,SLW-字左移指令,SRW-字右移指令;③双字移位指令,SLD-双字左移指令,SRD-双字右移指令。
1)循环移位指令包括
(1)字节循环移位指令:RLB-字节循环左移指令;RRB-字节循环右移指令。
(2)字循环移位指令:RLW-字循环左移指令;RRW-字循环右移指令。
(3)双字循环移位指令:RLD-双字循环左移指令;RRD-双字循环右移指令。
2)左、右移位指令的特点
(1)被移位的数据是无符号的。
(2)在移位时,存放被移位数据的编程元件的移出端与特殊继电器SM1.1相连,移出位送SM1.1,另一端补零。
(3)移位次数Ⅳ与移位数据的长度有关,若Ⅳ小于实际的数据长度,则执行Ⅳ次移位;若Ⅳ大于数据长度,则执行移位的次数等于实际数据长度的位数。
(4)移位数据Ⅳ为字节型数据。
(5)左、右移位指令影响到的特殊继电器有SM1.0(零)、SM1.1(溢出)。
(6)影响ENO正常工作的出错条件为SM4.3、0006。
3)循环左、右移位指令的特点
(1)被移位的数据是无符号的。
(2)在移位时,存放被移位数据的编程元件的移出端与另一端相连,又与特殊继电器SM1.1相连,移出位在被移到另一端的同时,也进入SM1.1;另一端自动补零。
(3)移位次数Ⅳ与移位数据的长度有关,若Ⅳ小于实际的数据长度,则执行Ⅳ次移位;若Ⅳ大于数据长度,则执行移位的次数为Ⅳ除以实际数据长度的余数。
(4)移位次数Ⅳ为字节型数据。
(5)循环移位指令影响的特殊继电器有SM1.1 (0)、SM1.1(溢出)。
(6)影响允许输出ENO正常工作的出错条件为SM4.3,0006。
4)左移和右移指令
左移和右移指令的功能是将输入数据IN左移或右移N位后,把结果送到OUT中。
(1)字节移位指令:
SLB-字节左移指令;
SRB-字节右移指令。
(2)字移位指令:
SLW-字左移指令;
SRW-字右移指令。
指令格式如下:
(3)双字移位指令:
SLD-双字左移指令;
SRD-双字右移指令。
指令格式如下:
5)循环左移和循环右移指令
(1)字节循环移位指令:
RLB-字节循环左移指令;
RRB-字节循环右移指令。
指令格式如下:
(2)字循环移位指令:
RLW-字循环左移指令;
RRW-字循环右移指令。
指令格式如下:
(3)双字循环移位指令:
RLD-双字循环左移指令;
RRD-双字循环右移指令。
指令格式如下:
6)移位寄存器指令
SHRB:移位寄存器指令。
指令格式如下:
(1)移位寄存器的数据类型无字节型、字型、双字型之分。
(2)移位寄存器最低位的地址为S_BIT;最高位地址的计算方法为MSB=(N-1+7S BIT的位号))/8,最高位的字节号为MSB的商+S BIT的字节号,最高位的位号为MSB的余数。
(3)移位寄存器的移出端与SM1.1连接。
(4)移位寄存器指令影响的特殊继电器为SM1.0(零)、SM1.1(溢出)。
(5)影口向ENO正常工作的出错条件为SM4.3(运行时间)、0006(问接寻址)、0091(操作数超界)、0092(计数区错误)。