关于pointer指针的问题
郑志武
发布于2012-11-22 09:18
191
0
标签:
pointer我看《s7-300和s7-400寻址》这个文档有一句这么说:pointer是一种用于传递指针的形参数据类型,长度为6个字节,
lp#m20.0
lar1
这个应该如何理解的,我这么想的既然是指针是6字节,是怎么能传个32位的ar1的?
还有就是lp#m20.0这个指令取到的830000a0这个地址一般叫做什么地址?(我知道的地址有绝对指针如上面的m20.0,符号地址)
图片说明: 1,pointer
佳答案
1、怎么能传个32位的ar1的?
lp#m20.0//把m20.0这个指针存入acc1,此时acc1的内容=830000a0(hex)=m20.0
lar1//存入ar1中。
830000a0(hex)为8个十六进制数,即4个字节=双字=32位。
2、830000a0这个地址一般叫做什么地址?
这是寄存器区域内间接寻址。格式为:
、10000yyy00000bbbbbbbbbbbbbbbb*,其中:
1000固定为8表示寄存器区域寻找;
、yyy:即第24、25、26位表示取值的范围,m(位存储区)为011 ,故为3。例如:
当是对p区域寻址时,ar=800*xx
当是对i区域寻址时,ar=810*xx
当是对q区域寻址时,ar=820*xx;
、bbbbbbbbbbbbbbbb :3-18bit指定byte字节。本例子中为a0=11000000,即20.0;
、*:其0-2bit,指定bit位..。
3、看看下述文档就明白了:
、见《详解西门子间接寻址.pdf》下载:
https://ishare.iask.sina.com.cn/f/3022080.html
、见《关于s7-300和s7-400指针寻址的说明与例程(更新版)》下载:
https://www2.ad.siemens.com.cn/download/upload/as/faq/f0215.pdf