找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
老外的程序吧,他们经常爱这样编程。
首先,L #MODULE-ADDRESS的实际把地址放到累加器中,可以认为是256.0。这个.0你可以理解是位;256是字节。
SLD 3实际上是把2在累加器中左移了3位,正像你所知道的。这样就成为区域内地址寻址的指针2.0。同样.0是位;2是字节。
这样地址相加的结果256.0+2.0=258.0,这才是地址和正确的结果。
就你的问题补充有一个疑问:就是+2,在Step7中不是一个正确的表达式啊。我想应该是:
L 2
SLD 3
+D
T #POINTER-IO-START。这样的结果就是258.0。
W[AR1,P#0.0]是一个寄存器区域间间接寻址指针。你要看#START-AXIS-1变量所代表是哪一个区域了,即区域标识符的26、25、24位.
当是对P区域寻址时,AR=800xxxxx
当是对I区域寻址时,AR=810xxxxx
当是对Q区域寻址时,AR=820xxxxx
当是对M区域寻址时,AR=830xxxxx
当是对DB区域寻址时,AR=840xxxxx
当是对DI区域寻址时,AR=850xxxxx
当是对L区域寻址时,AR=870xxxxx
举个例子,#START-AXIS-1是地址DB1.DBW2,数据为66。那么T PQW[#POINTER-IO-START]就把66传递给PQW258进行输出。
具体数据需要你看前面的例子了。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!