移位指令分为左、右移位和循环左、右移位及移位寄存器指令三大类。左移和右移指令的功能是将输入数据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(计数区错误)。