quote:以下是引用Rampage在2012-05-12 20:09:26的发言:
……
输入 P##IN_Source 为TIME类型的双字DB10.DBD10。
经过 L W#16#10 +AR1 这两条指令后,仿真后在standard一栏中看AR1还是10。为什么不是偏移了两个字节呢。
//仿真监视的AR1区域有2字节的偏移的!
在最后获取数据区域指针中L D [AR1,P#0.0] ,在在standard一栏中看为84000050,为什么不是84000060呢,上述的+AR1这条指令后,AR1中的内容不变化吗?
//如果是84000060那才怪了呢!指针指向DB10.DBD10,即在DB区域偏移10个字节,10=2#1010,在AR1中表示为2#1010000(左移3位,okay?),所以是84000050。
L D [AR1,P#0.0] // Get source memory area address
L #IN_Source_WORD_OFFSET // Load offset
SLD 4
+D
T #TMP_SRC_ADDR // Update source memory area address
最后请教各位大侠带有存储的指针怎么理解更形像呢,如P#M100.0 P#DB10。DBX0.0
//这就是Pointer指针,主要用于区域间的间接寻址。
……
综上所述,建议LZ再熟悉一下有关Pointer指针的基本结构和应用。