找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
1.FB中为了方便背景数据块参数的寻址,自动使用AR2寄存器,AR2寄存器指向背景数据块的首地址P#DBX0.0,如果改变了这个寄存器的值,你再访问背景数据块参数时将不会得到正确的数值.所以,在FB里使用AR2寄存器要小心,对这两个寄存器改变后不要再使用背景数据块参数,当要使用背景数据块参数时要先恢复这两个寄存器的值。
2.可以这么用,不过要确保在这之间不要访问FB的接口参数,因为只要访问了FB的接口参数,那么AR2就会被系统重写。
3.有一个常用的用法是多重背景FB的接口参数的寻址用法,需要用到AR2:(因为在多重背景中,变量的地址并不是其在背景数据块中的绝对地址,而是其相对于AR2的偏移地址),所以:在多重背景FB中,如果要得到某变量variable在背景数据块中的绝对地址,可以使用以下代码:
TAR2 // 将地址寄存器装入累加器 AC 1 (偏移量),也就是多重背景FB中第一个变量在背景数据块中的地址。
AD DW#16#00FFFFFF // 关闭区域 ID
L P##variable // 装载变量的地址
+D // 加上偏移量和变量地址
LAR1 // 将结果保存到地址寄存器 AR1 中
仿真情况参考附图。
综上:为了避免出错,除非实在需要,否则最好不要在FB中使用AR2,使用的时候也要特别小心。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城