any指针的使用的问题

any指针的使用的问题

ID:21700797

大小:25.50 KB

页数:5页

时间:2018-10-24

any指针的使用的问题_第1页
any指针的使用的问题_第2页
any指针的使用的问题_第3页
any指针的使用的问题_第4页
any指针的使用的问题_第5页
资源描述:

《any指针的使用的问题》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、any指针的使用的问题any指针的使用的问题  示例:any指针的使用。  编写一个计算功能的函数,输入参数“in_data”为一个数组变量,如果数组元素为浮点数,输出所有元素的平均值“out_val”,如果数组元素为其他数据类型,不执行计算功能。ob1中调用函数的程序如下:  callfc13  in_data:=p#db1.dbx0.0real8  out_val:=md20  完成的计算功能相当于md20=(db1.dbd0+..+..+db1.dbd28)/8。在函数(fc13)的接口参数中定义输入,输出变量及临时变量见表  inin

2、_dataany  outout_valreal  tempdata_lenint0.0  tempblock_noint2.0  tempadd_tempreal4.0  tempdata_noint8.0    fc13中的示例程序如下:  l0//初始化临时变量#add_temp  t#add_temp  lp##in_data//指向存储地址指针in_data首地址,并装载到地址存储器ar1中  lar1  lb[ar1,p#1.0]//如果数据类型不是real,跳转到end注1  lb#16#8  d  jcend    l0  l

3、w[ar1,p#4.0]//判断ob1中赋值的地址指针是否为数据块  =i  jcm1  t#block_no  opndb[#block_no]//如果是db块,打开指定的db块    m1:lw[ar1,p#2.0]//判断any指针中的数据长度,本例中为real变量的个数  t#data_len  ld[ar1,p#6.0]//找出需要计算数据区的开始地址,本例中为db1.dbx0.0  lar1  l#data_len  no:t#data_no//循环执行加指令运算,本例中循环执行的次数为8  ld[ar1,p#0.0]//装载db

4、1.dbd0到累加器1中注3  l#add_temp//与临时变量#add_temp相加后,将计算结果再存储到#add_temp中  +r  t#add_temp  +ar1p#4.0//地址寄存器加4,地址偏移量注2  l#data_no//loop指令固定格式  loopno    l#add_temp//求平均值  l#data_len  dtr//将变量个数转变为浮点值  /r  t#out_val//输出运算结果  end:nop0    问题:  注1:我认为此处应该为[ar1,p#0.0],根据下图得知,b0应为数据类型,8为3

5、2位浮点,应该与其进行比较  注2:db1的声明视图是不是如下图所示,否则就不能解释为何+4.0了  注3:这里注释应该为装载db1.dbd6到累加器1中    图片说明:  1,数据长度  2,db1的声明视图格式    最佳答案  注1:[ar1,p#0.0]是默认的10h,就是保留的那个。8为32为浮点数,比较应该是r;这是西门子的数据格式高位在前,低位在后。也就是mb0为第0-7位,而mw0中mb0和mb1分别占8—15和0—7,是反的。  注2:db1的声明视图格式不是这样的,还是从dbd0开始,而程序在调用fc13时,会自动开一个

6、10字节的l区域,来存储调用的any指针信息,也就是如果从l20.0开始,则lb20=10,lb21=08(数据类型),lw22=8(数据长度,也就是+2.0),lw24=1(数据块块号,也就是+4.0),ld26=dbd0(数据块的起始地址,也就是+6.0),然后再通过这个临时变量找到db块中的实际值。  注3:如果读懂了这个结构,就知道ld[ar1,p#0.0]//装载db1.dbd0到累加器1中是对的,因为在前面还执行了一次ld[ar1,p#6.0]  lar1  执行后,就相当于将dbd0地址装入到地址寄存器ar1中了  看来你需要1

7、、将any指针的数据结构弄清楚;  2、将西门子的数据位、字节、字和双字各点所在的位的关系弄清楚。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。