为什么指针寻址里老是用到移位指令呢?而不直接给地址呢?左移和右移分别有什么效果?谢谢了!
问题补充:
比如这个指针寻址程序:
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