那位帮忙看一下,这段程序的意思是不是:假如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