为什么指针寻址里老是用到移位指令呢?

为什么指针寻址里老是用到移位指令呢?而不直接给地址呢?左移和右移分别有什么效果?谢谢了!

问题补充:
比如这个指针寻址程序:
OPN   #I_DB_Signals
      L     #Selection
      SLW   3
      LAR1  
      L     DBD [AR1,P#12.0]
      T     #Buffer
      L     P##InputSignalChanged
      LAR1  
      L     #Buffer
      T     LD [AR1,P#0.0]
为什么要用SLW3?很多地方都用这种移位指令,谢谢!

最佳答案

为什么指针寻址里老是用到移位指令呢?
原因很简单,目的是为了形成地址寄存器(32位)地址。
1、首先需要熟悉,寄存器地址32位指针格式为:AR: 0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
其0-2bit(用X表示)指定bit位,3-18bit(用B表示)指定byte字节。其第31bit固定为0。
例如,当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4.。  
2、所以要老是用到移位指令来形成寄存器(32位)地址:
例如,累加器1中内容为26(十进制),即等于1A(十六进制)=0000 0000 0000 0000 0000 0000 0001 1010(b),左移3位后送至AR1后,AR=D0(十六进制)=0000 0000 0000 0000 0000 0000 1101 0000(b),实际上形成地址就是等于26.0。 
3、详见:
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
详见《step7编程之地址概念详解》连接:
http://ishare.iask.sina.com.cn/f/22746895.html
http://www.gongkong365.com/bbs/job.php?action=download&aid=96

提问者对于答案的评价:
谢谢了阿鸣大哥!!!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc236081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午3:31
下一篇 2018年12月1日

相关推荐