plc的移位指令C语言实现,移位指令做流水灯-PLC中使用移位指令是如何实现移位动作的-电气资讯 – 电工屋…「建议收藏」

plc的移位指令C语言实现,移位指令做流水灯-PLC中使用移位指令是如何实现移位动作的-电气资讯 – 电工屋…「建议收藏」移位指令的详述一般格式移位操作符(如SHR)OPR,CNT.其中OPR用除立即数外的任何寻址方式。移位次数由CNT决定,在8086中可以是1或CL,CNT为1时只移一位;如果需要移位的次数大于1时,需要先将移位次数存入CL寄存器中,而移位指令中的CNT写为CL即可。在其他机型中可使用CL和CNT,且CNT的值除可用1外,还可以用8位立即数指定范围从1到31的移位次数。有关OPR和CNT的规定…

大家好,又见面了,我是你们的朋友全栈君。

移位指令的详述

一般格式 移位操作符(如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.

汇编语言中的“移位指令”具体的操作是什么

SHL/SAL一样:逻辑/算术左移,最高位进到CF,最低位补0;

SHR:逻辑右移,最低位进到CF,最高位补0;

SAR:算术右移,最低位进到CF,最高位不变;

ROL:循环左移,最高位进到CF的同时补到最低位;

ROR:循环右移,最低位进到CF的同时补到最高位;

RCL:带进位循环左移,最高位进到CF的,同时CF值补到最低位;

RCR:带进位循环右移,最低位进到CF的,同时CF值补到最高位;

SHLD:双精度左移,第二个操作数移位到第一个操作数,第一操作数进到CF,和逻辑左移类似,低位移到高位;

SHRD:双精度左移,第二个操作数移位到第一个操作数,第一操作数进到CF,和逻辑由移类似,高位移到低位;

这样差不多可以了吧。

哪些“plc移位指令”的实例

字节移位指令一共有四个

循环右移、循环左移、右移、左移

循环移位指令(左、右)八个位是循环移动的

也就是说循环左移1位就是向左移动1位 最高位移到最低位处

循环右移1位相应的位向右移动1位最低位移到最高位

移位指令是PLC的一条重要指令 ,可用于步进顺序控制 ,利用这种顺序控制方式可实现其它一些控制功能 ,下面举两例说明移位指令的应用。1 循环闪灯程序对八只灯进行循环控制。要求从第一个灯开始间隔 5秒逐个顺序点亮 ,等八只灯全部点亮后又从第一个灯开始间隔 5秒逐个熄灭

f95620b341fcf557a51e974346e4fe0a.png

PLC中使用移位指令是如何实现移位动作的

字节移位指令一共有四个

循环右移、循环左移、右移、左移

循环移位指令(左、右)八个位是循环移动的

也就是说循环左移1位就是向左移动1位 最高位移到最低位处

循环右移1位相应的位向右移动1位最低位移到最高位

例如:11000010 》》》循环右移1位》》》01100001

11000010 》》》循环左移1位》》》10000101

右移1位:也就是说相应的位都右移1位 最低位消失 最高位补0

左移1位:也就是说相应的位都左移1位 最高位消失 最低位补0

例如:11000010》》》左移》》》》》10000100

11000010》》》右移》》》》》01100001

代号直接看西门子就是了

满意请及时加分 谢谢

汇编移位指令

DL C

1011 1001 1

SHL DL, 1

DL C

0111 0010 1

左移时,右边补零,移出位置于C Flag中,影响O, S, Z, P, C标志位

DL C

1011 1001 1

RCR DL, 1

DL C

1101 1100 1

带进位循环右移时,C Flag一起参与移位,C Flag移位至DL最高位,DL最低位移至C Flag,原DL其它位向右移一位。影响O, S, Z, P, C标志位

由于以上只移动1位,没有涉及使用CL,所以CL的值就不用考虑了。

当使用SHL DL, CL移多位时,相当于多次一位的移动。

建议,还是看看书吧。我想书上对SHL, SAL, SHR, SAR, ROL, ROR, RCL, RCR都有比网上更详细的说明吧。越码例子多多。

PLC中使用移位指令是如何实现移位动作的、移位指令,就介绍到这里啦!感谢大家的阅读!希望能够对大家有所帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135419.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 第2章 数据库关系模型—数据库原理及应用

    第2章 数据库关系模型—数据库原理及应用第2章数据库关系模型作业常用的关系查询操作包括选择、投影、连接、并、交等。v 实体完整性是指关系表的属性组成必须是完整的。x 自然连接是一种等值连接。v 在参照完整性中,可以定义级联操作。v 用户自定义完整性可以实施数据的业务约束。v 每个关系是一个二维表,但二维表不一定是关系。v 关系中复合键至少包含两个属性。v 代理键是为了唯一标识关系的不同元组,需要在表单或报表中显示…

    2022年7月16日
    14
  • AD域和LDAP协议

    AD域和LDAP协议AD域和LDAP协议1、LDAP1.1常见的目录服务软件X.500LDAPActriveDirectory,Microsoft公司NIS1.2LDAP特点LDAP是轻量目录访问协议(LightweightDirectoryAccessProtocol)的缩写。LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议LDAP标准实际上是在X.500标准基础上产生的一个简化版本,它是基于X.500标准的,与X.500不同,LDAP支持TCP/IP

    2022年5月17日
    61
  • Oracle 根据dbf文件的数据恢复[通俗易懂]

    Oracle 根据dbf文件的数据恢复[通俗易懂]数据丢失真的是很严重的事情,此处记录下一次数据恢复的历程。背景:服务器上,Oracle数据库数据丢失,开发机上,有数据,但是因为系统坏了(太巧了),先进去把dbf文件备份出来,然后重做了系统(全盘格式化的,不要问我为什么不是只有c盘,售后做的,所以才有了后面数据恢复困难的事情)。数据恢复方法:1.闪回2.根据dbf恢复3.使用工具prm-dul方案一:数据闪回。…

    2022年7月17日
    11
  • org.apache.kafka.clients_kafka源码分析

    org.apache.kafka.clients_kafka源码分析apacheKafka中国社区中国社区QQ群1:162272557未满收费5¥,保证QQ运营,腾讯QQVIP收年费,2000人群非常活跃,质量很高中国社区QQ群2:414762562未满1000人群中国社区QQ群3:191278841未满1000人群中国社区QQ群4:415846802未满1000人群每当有新blog发布时,会在此处更新,欢迎大家拍砖共同成长目录索引…

    2022年10月14日
    0
  • SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法

    SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法以前一直使用SQLServer2000,现在跟潮流都这么紧,而且制定要求使用SQLServer2005,就在现在的项目中使用它了。 对于SQLServer2005,有几个地方是要注意的,比方在还原数据库时,不像2000里边将数据库和文件区分的很细,统一均为文件,这就使还原的数据库文件制定为.bak。那么想还原2000的数据库(备份数据库文件,无后缀名的),就需要自己手工选择。

    2022年5月26日
    24
  • wpf滑动动画_旋转平移矩阵

    wpf滑动动画_旋转平移矩阵在WPF动画中常见的动画就平移、缩放以及旋转,一般会用到故事板(Storyboard)和浮点动画(DoubleAnimation),下面我们先对这两个进行具体的介绍,因为本次我们主要利用故事板来添加动画:一.Storyboard:俗称故事板,在VS中意思是,一个容器的时间线,该时间线为子动画提供对象和属性确定信息:其重要的两个方法`Storyboard.SetTarget();`绑定动画和`Storyboard.SetTargetProperty();`依赖的属性一般用法有:Storyboard

    2022年10月21日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号