回复:请高手给看一下此指针的意思

坏笨笨

  • 帖子

    406
  • 精华

    4
  • 被关注

    48

论坛等级:侠士

注册时间:2010-03-17

普通 普通 如何晋级?

发布于 2014-03-04 12:04:42

36楼

quote:以下是引用老学童在2013-09-19 14:03:08的发言:
Monsanto朋友,我很乐意回答你的问题,不过在别人的帖子上挂自己的问题显得对楼主不太友好,好在楼主的问题已经基本上解决了,而且你的问题与楼主的问题类似、而且还都是‘DB6’,就算是楼主的亲戚或对楼主问题的延伸吧,O(∩_∩)O~!

另外,以后贴程序最好详细一些,比如生成一个源程序,这样给别人的信息量就会大一些,对你提出的问题也能回答的准确些,对吧。

这个程序的寻址起始地址和目标地址不是从P#0.0开始的,但却是很多实际应用中经常用到的,因为一个DB数据块中存储大量的数据,很多情况下需要从DB中间的某个位置读取或另一个位置存储数据;

我觉得把程序标注出来,不如给你讲解一下解读程序的思路,这样以后遇到新的程序就不至于束手无策了;

在分析一个程序前,一定要先搞清楚程序的作用或功能是什么,然后要搞清楚每个变量的含义和数据类型,
例如:
程序作用分析:
在某个DB数据区传递数据,数据是INT或WORD(16位)型;

变量分析:
#znCnt 用整数128赋值,INT或WORD类型(16位),这里一定是INT类型,
赋值128后接着又加100,推断128是某个数据区相对于DBX0.0的偏置尺寸,而100是要读取
数据相对于该数据区首地址的偏置尺寸,再者在后面读取(源)数据时,先减去1,然后左移
3位,因此推断#znCnt是用于存放数据区的首地址偏置(128)的变量;

#zdSrc 计算偏置尺寸减去1后在累加器1(32位)中的左移3位的值,它肯定是要读取(源)数据的
区域指针(字节地址.位地址),=P#227.0

#zdDstLo 数据区的首地址偏置#znCnt减去1后,在累加器1(32位)中左移4位的值,相当于左移3位
后乘以2,它肯定是要存入数据的区域指针(字节地址.位地址),=P#254.0

#zdDstHi 是#zdDstLo+L#8,偏移了一个字节,可以肯定#zdDstLo是存入数据的低字节区域指针,
而#zdDstHi是存入数据的高字节区域指针, = P#255.0

OPN DB6
L 128
T #znCnt
L 100
+I

L 1
-I
SLW 3
T #zdSrc
L #znCnt

L 1
-I

SLW 4

T #zdDstLo
L L#8
+D
T #zdDstHi

Monsanto朋友,不知道我的解释能否让你看懂这段程序!

老学童果然厉害,高人,如果有问题向您请教,请不吝赐教,多谢多谢!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54756条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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