1. 移位指令的详述
一般格式 移位操作符(如SHR) OPR,CNT.
其中OPR用除立即数外的任何寻址方式。移位次数由CNT决定,在8086中可以是1或CL,CNT为1时只移一位;如果需要移位的次数大于1时,需要先将移位次数存入CL寄存器中,而移位指令中的CNT写为CL即可。在其他机型中可使用CL和CNT,且CNT的值除可用1外,还可以用8位立即数指定范围从1到31的移位次数。有关OPR和CNT的规定适用于以下所有指令操作。具体格式如下所述。以逻辑右移为例。
如:MOV AX,62H
SHR AX,1
当移位数大于1时,需要先将移位数放进CL中然后再进行移位操作。
如:MOV AL,62H
MOV CL,4
SHR AL,CL
条件标志位
CF(进位标志) = 移入的数值
1 CNT=1时,最高有效位的值发生变化
0 CNT=1时,最高有效位的值不变
移位指令:
SF(符号标志)、ZF(零标志)、PF (奇偶标志)根据移位结果设置,AF(辅助进位标志)无定义
循环移位指令:
不影响 SF、ZF、PF、AF
条件标志位应用于具体的操作数中使用,以下叙述中未详细写明,初学者可不予理会。 SAL(shift arithmetic left) 算术左移
格式:SAL OPR,CNT
含义: 算术左移SAL把目的操作数的低位向高位移,空出的低位补0.
(指将要移位的操作数换成二进制表示方法,如62H为01100010B.移位时只是寻常理解中的将这些二进制位逐个向左或向右移,移走的数根据操作符决定舍弃或者放入空出的位置,空出的位置根据操作符决定补0或者放入移走的数)。
SAR(shift arithmetic right) 算术右移
格式:SAR OPR,CNT
算术右移SAR把目的操作数的高位向低位移,空出的高位用最高位(符号型稿位)填补。
如62H二进制表示法为01100010B,最高位为0,无论右移多少位左边都用0补上。如果最判租伏高位是1,则都用1补上。
注:算术移位指令常用于带符号数*2或/2,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。 逻辑左移SHL(Shift Logical Left)和逻辑右移SHR(Shift Logical Right)
格式:SHL(或SHR) OPR,CNT
逻辑左移/右移指令只有它们的移位方向不同,移位后空出的位都补0。
注:逻辑移位指令常用于无符号数*2或/2,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。 循环左移ROL(Rotate Left)和循环右移ROR(Rotate Right)。
格式:ROL(或ROR) OPR,CNT
循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位。可以理解为蛇咬尾巴型循环。
带进位的循环左移RCL(Rotate Left Through Carry)和带进位的循环右移RCR(Rotate Right)。
格式:RCL(或RCR)OPR, CNT
带进位的循环左移/右移指令只有移位的方向不同,它们都用原CF的值填补空出的位,移出的位再进入CF。
注:受影响的标志位:CF和OF。
以上算术,循环和逻辑移位指令均可以作字或字节的操作,386及其后继机型还可作双字操作。 386及其后继机型可使用本组指令
SHLD(shift left double) 双精度左移和SHRD(shift right double) 双精度右移
格式:SHLD(或SHRD)DST,REG,CNT
这组指令可以取两个字作移位操作而得到一个字的结果,也可以取两个双字作移位操作掘携而得到一个双字的结果。在移位中,作为源操作数的寄存器提供移位值,以补目的操作数因移位引起的空缺,而指令执行完成后,只取目的操作数作为移位的结果,源操作数寄存器则保持指令执行前的值不变。
这是一组三操作数指令,其中DST可以用除立即数以外的任一种寻址方式指定字或双字操作数。源操作数则只能使用寄存器方式指定与目的操作数想同长度的字或双字。第三个操作数CNT用来指定移位次数,它可以是一个8位的立即数,也可以是CL,用其内容存放移位计数值。移位计数值的范围为1到31,对于大于31的数,机器则自动取模32的值来取代。
如:SHLD EBX,ECX,16
指令执行前:(EBX)=12345678H, (ECX)=13572468H,
指令执行后:(EBX)=56781357H,(ECX)=13572468H,CF=0.
2. 西门子PLC 移位指令及应用
可使用移位指令向左或向右逐位移动输入 IN的内容(另请参阅 CPU寄肆帆存器)。向左移动 n位相当于将输入端 IN的内容乘以 2的 n次幂(2n);向右移动 n位则相当于将输入端 IN的内容除以 2的 n次幂(2n)。例如,如果将等价于十进制值 3 的二进制数左移 3 位,将得到等价于十进制值 24 的二进制数。
如果将等价于十进制值 16 的二进制数右移 2 位,则会得到等价于十进制值 4 的二进制数。可提供给输入参数 N的数值决定了移动相应值的位数首拿。移位指令产生的空位将用零或符号位的信号状态(0表示正,1表示负)来填补。最后移动的位的信号状态将装入状态字的 CC1位中。状态字的 CC0和 OV位将复位为 0。您可以使用跳转指令判断 CC1位。
西门子PLC 移位指令根据不同参数调整以及数据类型,可用于SHR_I(整数右移)、SHR_DI(长整数右移)、SHL_W(字左移)、SHR_W(字者雹搭右移)、SHL_DW(双字左移)以及SHR_DW(双字右移)。
(2)1数据移位指令有哪些扩展阅读:
西门子公司的PLC产品包括LOGO、S7-200、S7-1200、S7-300、S7-400、S7-1500等。 西门子S7系列PLC体积小、速度快、标准化,具有网络通信能力,功能更强,可靠性高。S7系列PLC产品可分为微型PLC(如S7-200),小规模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。
可编程控制器是由现代化生产的需要而产生的,可编程序控制器的分类也必然要符合现代化生产的需求。一般来说可以从三个角度对可编程序控制器进行分类。其一是从可编程序控制器的控制规模大小去分类,其二是从可编程序控制器的性能高低去分类,其三是从可编程序控制器的结构特点去分类。
3. 移位指令的介绍
移位操作指令是一组经常使用的指令,属于汇编语言逻辑指橘颂令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环圆宴郑移位指令),双精度移位指令祥昌三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。
4. plc移位指令和传送指令的号码是什么
1 PLC移位指令的号码是SHL或SHR,PLC传送指令的号码是MOV。
2 PLC移位指令辩凯可饥裤以将数据在寄存器或存储单元中向左或向右移动,而PLC传送指令可以将数据从一个存储单元复制到另一个存储单元。
3 PLC移位指令和传送指令是PLC编程中常用的指令,掌握它们的使用方法对于携肢唤PLC编程人员来说是非常重要的。