下面是移位指令的一些信息:
ROR,RORP,ROL,ROLP:16位指令 DROP,DROPP,DROL,DROLP:32位指令
右回转ROR与左回转ROL指令编程方式如下: ROR D10 K2 ROL D10 K2 *D10将要执行回转动作的寄存器,可以是寄存器,T,C或是位元件的组合如K4Y0,K4M0,K4S0( 不允许KnX),并且只有K4和K8有有效的如:K4M10,K8Y0 *K2要回转的位数,只能是数值。用于16位指令必须小于16,用于32位指令必须小于32。
实例: 假设D0=29477 0111 0011 0010 0101
LD M0 RORP D0 K3 (M0闭合,只执行一次右回转指令,每次向右回转3个位) 结果为D0=-20892 1010 1110 0110 0100
LD M0 ROLP D0 K3 (M0闭合,只执行一次左回转指令,每次向左回转3个位) 结果为D0=-26325 1001 1001 0010 1011
带进位右回转指令(RCR,RCRP,DRCR,DRCRP),带进位左回转指令(RCL,RCLP,DRCLP,DRCL)
仍发上述的例子解释,比较带进位与不带进位回转指令的区别: 假设D0=29477 0111 0011 0010 0101
LD M0 RCRP D0 K3 (M0闭合,只执行一次右回转指令,每次向右回转3个位) 假设此时进位标志M8022为断开状态(M8022=0)右起的第三位(“1”)丢失,右面两位与M8022组合(01+M8022=010)右转。 结果为D0=20068 0100 1110 0110 0100
LD M0 RCLP D0 K3 (M0闭合,只执行一次左回转指令,每次向左回转3个位) 假设此时进位标志M8022为闭合状态(M8022=1)左起的第三位(“1”)丢失,左面两位与M8022组合(M8022+01=101)左转。 结果为D0=-26323 1001 1001 0010 1101 |