寄存器寻址与指针型参数

图片实例来廖常出的书里面,目前读到这比较难理解。希望大家帮忙解释下。
1. L P##start_addr 存储的应该是db2.dbx4.0 对应的数值为什么不是P#V4.0,而是P#V21.0
2,L  w[ar1,P#0.0] 这句话为啥能把db块的号都出来?W指的什么?
3,L D [ar1,P#2.0] 同理,这个怎么理解?同时D代表什么
感谢各位解惑。

图片说明:

寄存器寻址与指针型参数   

最佳答案

对于指针一直理解不好,我试这回答下,大伙帮忙看看
1. L P##start_addr 存储的应该是db2.dbx4.0 对应的数值为什么不是P#V4.0,而是P#V21.0
答:指针的格式你需要看看,书中写到了第一条指令后,
累加器1为 2#1000 0111 0000 0000 0000 0000 1010 1000,这个明白了,其实指针转换后2进制的最后三位,代表了平时存储数据点后的0到7。你移三位后那么最后就是10101.000
转换后就是21.0了。
2,L  w[ar1,P#0.0] 这句话为啥能把db块的号都出来?W指的什么?
答:这一步DB块的编号应该还没有出来。首先W代表了一个字的长度。程序前三步的意思是
首先把指针的地址存在一个地方。然后在累加器1放入数字0。再放入第二个数字比较。说白了就是比较是不是0。这第二个数字就是从指针所指向的地方开始的1个字内获得。
3,L D [ar1,P#2.0] 同理,这个怎么理解?同时D代表什么
答:D代表双字,也是地址长度。他的意思和上面差不多,区别在于P2.0
上面的意思是指针指向的第一个字,这条的意思就是从指针指向第一个地址的地方偏移2.0。
比如上面的是MW0那么这步的地址就是MD2。
下面的地址你可以先看看指针相关资料。
如果还不明白再留言吧
参考资料:http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=131412&cid=1029

提问者对于答案的评价:

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月5日
下一篇 2017年6月5日

相关推荐