指针寻址问题

已锁定

Rampage

  • 帖子

    149
  • 精华

    1
  • 被关注

    29

论坛等级:侠客

注册时间:2009-12-09

普通 普通 如何晋级?

指针寻址问题

1612

9

2012-05-12 20:09:26

L P##IN_Source // Load source pointer
LAR1 // Load ind.register AR1
L W [AR1,P#0.0] // Get source DB address
T #TMP_DB_SRC
L W#16#10 // Point to byte 2
+AR1
L B [AR1,P#0.0] // Get source memory area type
L B#16#85 // Load DI type code
>I // IF memory area type is L [local data]
JC END // THEN jump to exit
TAK // Load memory area type
L B#16#84 // Load DB type code
JC END // THEN jump to exit
T B [AR1,P#0.0] // Force source memory area type=DB
SET
S #TMP_DB_SRC_PRE // 1= Source memory area is a DB type
END: NOP 0
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

这段寻址问题基本看明白了判断读取的数据是否为DB类型和装载数据区域指针。不过有几个问题还是困扰了好长时间。
输入 P##IN_Source 为TIME类型的双字DB10.DBD10。
经过 L W#16#10 +AR1 这两条指令后,仿真后在standard一栏中看AR1还是10。为什么不是偏移了两个字节呢。
在最后获取数据区域指针中L D [AR1,P#0.0] ,在在standard一栏中看为84000050,为什么不是84000060呢,上述的+AR1这条指令后,AR1中的内容不变化吗?
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
求各位大侠指导,不甚感激!
指针寻址问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54711条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。