quote:以下是引用youhm在2010-06-29 15:21:25的发言:
就楼主这个问题,用模拟器做了一些测试,下面说一下我的理解
FB中为了方便背景数据块参数的寻址,自动使用DI寄存器和AR2寄存器,DI寄存器保存的是当前背景数据块号,AR2寄存器指向P#DBX0.0,如果改变了这两个寄存器的值,你再访问背景数据块参数时将不会得到正确的数值,而且如果写成L W[AR2,P#0.0]这样的方式保存后可能会自动变成背景数据块接口参数(虽然并不会改变你实际目的,但这样看起来很麻烦)
所以,在FB里使用DI寄存器和AR2寄存器要小心,对这两个寄存器改变后不要再使用背景数据块参数,当要使用背景数据块参数时要恢复这两个寄存器的值就可以了
嗯,是这个理,我觉得要用还是可以,就像你说的,在用之前要保存DI,AR2的数据,用完后还原。
所以,在用之前应该这样写一段
TAR2 #AR2temp //临时变量,在当前AR2的值。
……
……
使用AR1,AR2的程序段
……
……
LAR2 AR2temp //把地址还给AR2