&和*的用法
最佳答案
直接寻址:已知具体的地址找某人A,例如x街x号x-x-x房间,你到此即可找到该房间里的某人A..。
、间接性寻址:不直接知道具体的地址找某人A,但直接知道某人B的地址,因为某人B知道某人A的地址。因此,你首先据某人B的地址要找到该房间里的某人B.。从某人B那里知道了某人A的地址,然后,你据某人A的地址间找到该房间里的某人A..。俗称,兜圈子。
参考链接:
《我们为什么要学习间接寻址》
http://blog.plcjs.com/blog-16037-9291.html
《直接寻址,间接寻址,存储器寻址是什么意思》
http://www.it8g.com/XiTong/201002/34911.htm
看看这个:
LD SM0.0
MOVD &VB0, LD10 建立一个指针。
+D VD1004, LD10 指针增加的字节数。
MOVB *LD10, VB1900 把指针里面的起始数据增加到VB1900开始的地址中。
应该改成这样才对
LD SM0.0
MOVD &VB0, AC0
+D VD1004, AC0
MOVB *AC0, VB1900
如果VB200=12,执行MOVB &VB200,AC1,MOVB *AC1 , AC0
后AC0的内容是什么?
答:AC0=12。问题不大。
从这个简单的问题上可以看出来没有什么区别,其实很大的分支的。你要知道指针地址和使用指针就有点区别了。
MOVB &VB200,AC1
MOVB *AC1 , AC0
这两条指令的作用应该是等同于:
MOVB VB200,AC0
也可以用MOVD $VB200,AC0。但是如果用MOVD VB200,AC0这个就是错误。另外MOVD VD200,AC0这个是正确的。
MOVB &VB200,AC1 把VB200的地址(VB200的起始地址)作为指针存入AC1。
MOVB *AC1 , AC0将AC1所指向的字节(VB201)的值送入到AC0。
这里显然可以看出两种不同的地址。
具体可以参考一下《S7-200系统手册》内容在第四章,PLC的基本概念。
文档连接:
http://www.ad.siemens.com.cn/download/DocList.aspx?TypeId=1&CatFirst=1&CatSecond=2&CatThird=-1
1109582 S7-200可编程控制器系统手册
参考:http://www.ad.siemens.com.cn/service/answer/solved_80106_1028.html
专家奖励分:5分
提问者对于答案的评价:
好的 谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc293964.html