这段程序怎么理解?

那位帮忙看一下,这段程序的意思是不是:假如DB20.DBW2=1,则把DB302.DBD32的值赋给MD500,前面两段相当于DB20.DBW2乘以32等于MD1004?
可是实际的测试结果是把DB302.DBD4的值赋给MD500,我是哪一步理解错了?

图片说明:

这段程序怎么理解?   

最佳答案

L  "run.sp1"   DB20.DBW2  //这个时候为1
L  4
*I
T  MD1000    //此时MD1000为4

L  MD1000   //
SLD 3          //执行左移动3个位,相当于乘以8了,此时为32;运用指针时要注意不要漏了。
T  MD1004   //  值为32

OPN "V2"       DB302
L   DBD[MD1004]   这里用到了指针,所以之间有两个左移的指令,MD1004为32,根据指针的定义,0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址;所以字节的地址为4 所以就是DB302.DBD4
T  MD500
假如DB20.DBW2=1,则把DB302.DBD32的值赋给MD500:那就就要这么改了
L  "run.sp1"   DB20.DBW2 
L  32
*I
T  MD1000

提问者对于答案的评价:
非常感谢,问题的关键在于我对于指针的应用不理解,得好好学学~

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

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

相关推荐