发布于 2010-12-13 15:42:50
5楼
总算明白了。
zhangli0给的资料缺了一部分,如果加上pointer和any的寻址就没问题了,另外860才是L,870是V。
这里面用到的其实是pointer,pointer是48位,前12位是DB号(或为0),后32位采用区间寻址的话是1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX。前面八位是数据区,14-29是字节地址,30-32是位地址。
#Meas_Val是pointer类型。
那么L P##Meas_Val 其实是(hex)前十六位:1f6(十进制502)后32位84000049,但是模拟器模拟出来的AR1是870000a8(即V21.0)这是为什么?
L W[AR1,P#0.0],其实取得是前16位,即502;
后面的 L D[AR1,P#2.0],其实是AR1偏移2个字节(即偏移16位),得到后32位即84000049.
LAR1 最后为 DBX9.1
大致就是这样,希望指正。详见pointer和any的寻址。
不知道这种用法作用在什么地方,感觉没有很深的意义呀。不过我也复习了一遍指针,感觉总算是把指针学到了。
好好学习,天天向上