ar1和ar2在fb中使用应该怎么用呢?
郑志武
发布于2012-11-16 15:51
2
0
标签:
问题有三个:
1.在fb中用到的ar2一般用到哪些地方?
2.在fb中如果要同时用到ar1和ar2是不是只要先保存ar1和ar2,用完后再把ar1和ar2还原就可以了
3.如果不是2上我说的那样使用的话,应该怎么使用呢?
问题补充:
特别是fb中使用到多重背景功能的时候
佳答案
1.fb中为了方便背景数据块参数的寻址,自动使用ar2寄存器,ar2寄存器指向背景数据块的首地址p#dbx0.0,如果改变了这个寄存器的值,你再访问背景数据块参数时将不会得到正确的数值.所以,在fb里使用ar2寄存器要小心,对这两个寄存器改变后不要再使用背景数据块参数,当要使用背景数据块参数时要先恢复这两个寄存器的值。
2.可以这么用,不过要确保在这之间不要访问fb的接口参数,因为只要访问了fb的接口参数,那么ar2就会被系统重写。
3.有一个常用的用法是多重背景fb的接口参数的寻址用法,需要用到ar2:(因为在多重背景中,变量的地址并不是其在背景数据块中的绝对地址,而是其相对于ar2的偏移地址),所以:在多重背景fb中,如果要得到某变量variable在背景数据块中的绝对地址,可以使用以下代码:
tar2//将地址寄存器装入累加器ac1(偏移量),也就是多重背景fb中个变量在背景数据块中的地址。
addw#16#00ffffff//关闭区域id
lp##variable//装载变量的地址
+d//加上偏移量和变量地址
lar1//将结果保存到地址寄存器ar1中
仿真情况参考附图。
综上:为了避免出错,除非实在需要,否则好不要在fb中使用ar2,使用的时候也要特别小心。