技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 关于指针的应用?指向哪里?

关于指针的应用?指向哪里?

刘玉蓉 发布于2014-11-07 17:36 192 0 标签:

LAR1  P##addr_1
      AD    DW#16#FFFFFF
      L     W#16#1002
      T     LW [AR1,P#0.0]
      L     26
      T     LW [AR1,P#2.0]
      L     #WinACOldDB
      T     LW [AR1,P#4.0]
      L     DW#16#84000000
      T     LD [AR1,P#6.0]
这个功能块里面的一段程序,#addr_1是定义在TEMP中的ANY 类型变量,请问这个ANY类型是个什么类型?多少位 的?另外这段程序中的指针指向什么存储区域了?具体是哪个字节?,#addr_1由在什么存储区域,具体哪个字节?

问题补充:
现在还有句和第二句不明白,我是这样理解的,#addr_1本身是一个指针,句是把一个指向这个指针的指针放到LAR1中,
但是第二句是什么意思?为什么要做与操作?

佳答案

ANY是参数类型,当参数的类型不能确定或实参可使用任何数据类型时,可使用该参数,其占10个字节;
你的这段程序是利用寄存器AR1寻址,通过地址寄存器AR1对工作存储区中的临时本地数据存储器(L堆栈)内容进行寄存器间接寻址。地址寄存器AR1的内容加上偏移量形成指针(Pointer,指针是指向一个变量的地址,即用地址作为实参)。地址寄存器及其偏移量(如P#2.0)必须写在方括号内。寄存器间接寻址不改变地址寄存器的数值。用寄存器指针访问一个字节、字或双字时,必须保证地址指针中位地址编号为0。
所以这段程序中的指针指向本地数据存储器(又称本地数据寄存器),如LW[AR1,P#2.0]是指本地数据值:假设暂态变量#addr_1的值为26(指令LAR1  P##addr_1是将地址指针常数(暂态变量#addr_1)直接装载到地址寄存器AR1中)
AR1的值=26=2#0000 0000 0000 0000 0000 0000 1101 0 000
      P#2.0=2#0000 0000 0000 0000 0000 0000 0001 0 000
所以AR1加偏移量P#2.0的结果:2#0000 0000 0000 0000 0000 0000 1110 0 000,把字节相加,后3位为位号相加LW28,所以程序执行的结果是累加器AR1加指针偏移量指明存储字为本地数据字LW28,将累加器1中的内容
所以#addr_1本身是将一个暂态变量作为一个指针,句是把一个指向这个指针的指针放到LAR1中
AD    DW#16#FFFFFF // 将将累加器1中的内容与16#FFFFFF进行双字相”与“,由于FFFFFF每位都为”1“,结果不变,实际没有意义。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签