
移位指令的最大移位位数为八位
移位指令的最大移位位数为八位要看情况。
拓展内容
其中OPR用除立即数外的任何寻址方式。移位次数由CNT决定,在8086中可以是1或CL,CNT为1时只移一位;如果需要移位的次数大于1时,需要先将移位次数存入CL寄存器中,而移位指令中的CNT写为CL即可。
在其他机型中可使用CL和CNT,且CNT的值除可用1外,还可以用8位立即数指定范围从1到31的移位次数。有关OPR和CNT的规定适用于以下所有指令操作。具体格式如下所述。以逻辑右移为例。
这组指令可以取两个字作移位操作而得到一个字的结果,也可以取两个双字作移位操作而得到一个双字的结果。在移位中,作为源操作数的寄存器提供移位值,以补目的操作数因移位引起的空缺,而指令执行完成后,只取目的操作数作为移位的结果。
源操作数寄存器则保持指令执行前的值不变。这是一组三操作数指令,其中DST可以用除立即数以外的任一种寻址方式指定字或双字操作数。源操作数则只能使用寄存器方式指定与目的操作数想同长度的字或双字。
第三个操作数CNT用来指定移位次数,它可以是一个8位的立即数,也可以是CL,用其内容存放移位计数值。移位计数值的范围为1到31,对于大于31的数,机器则自动取模32的值来取代。
移位指令可以可以将累加器1的低字或整个累加器的内容进行左移或右移一定的位数。二进制数左移一位相当于将原数值乘以2。右移一位相当于将原数值除以2。
移位指令是根据PLC的扫描周期工作的。如果I0.0前不加P,I0.0动作一次则PLC扫描几百次,位移指令就执行几百次(QB0的状态已经移动完毕,换成循环位移则可以看到状态持续的变化)。如果加P,I0.0动作一次则QB0的状态移动一次。