回复:指针难题询问

Letham

西门子1847工业学习平台

  • 帖子

    2021
  • 精华

    43
  • 被关注

    360

论坛等级:至圣

注册时间:2006-04-15

钻石 钻石 如何晋级?

发布于 2017-07-14 09:14:02

7楼

展开查看
以下是引用meiruhua在2017-07-12 09:28:56的发言 >3楼

 L W [ AR1 , P#0.0 ]     我就不明白这步是怎么取那个DB号的

以下是引用艾星落尘在2017-07-11 13:12:30的发言 >:      L     ...

引用详细内容:

      L     P##S1           //取指针地址,从下面的使用情况来看因该是POINTER     

      LAR1                    

      L     P##S2           //取指针地址,从下面的使用情况来看因该是POINTER       

      LAR2                       

      L W [ AR1 , P#0.0 ]        

      T     #w_Temp          //取S1对应的DB号给 #w_Temp     

      OPN DB [ #w_Temp]       //打开#w_Temp 对应的DB块   

      L D [ AR1 , P#2.0 ]          

      LAR1                    //取S1指针对应的地址数据存入AR1                 

      L W [ AR2 , P#0.0 ]        

      T     #w_Temp           //取S2对应的DB号给 #w_Temp        

      OPN DI [ #w_Temp]       //打开#w_Temp 对应的背景DB块       

      L D [ AR2 , P#2.0 ]         

      OD    16#0100_0000     //这个逻辑或的作用应该是将该地址转化为背景数据    

      LAR2                   //取S2指针对应的地址数据存入AR2        

      SET

      SAVE                      

      L B [ AR1 , P#1.0 ]     //取S1对应的DB块的数据的第二个字节,应该是字符串实际使用的数据  

      +     1                   

LOP:  T     #y_Loop              

      L B [ AR1 , P#1.0 ]        

      L B [ AR2 , P#1.0 ]   //因为是字节进行比较所以就有了 OD    16#0100_0000  这段指令     

      <>I                    //两个DB块的字符串进行比较不等就跳转到循环外,       

      JC    RESE               

      +AR1  P#1.0                

      +AR2  P#1.0           

      L     #y_Loop

      LOOP  LOP               //如果比较的结果相等就继续执行,知道循环数结束为止

      S     #EQ_STRNG         //比较结果都相等就置位#EQ_STRNG    

      JC    ENDE               

RESE: R     #EQ_STRNG         //比较结果有不等的就复位#EQ_STRNG     

ENDE: BE


需要了解下 指针类型POINTER 结构 就明白了!

Pointer可以理解成指向指针的指针,它所占的6个字节的地址空间分别指向一个DB块号(如果是DB,非DB内存则为0)和实际的指针地址

至于怎么取那个DB号,正常时,那个是由CPU操作系统在调用这段程序,在实参赋值形参时 自动赋值到W[AR1,P#0.0]里的 。D[AR1,P#2.0]就是指针地址了(当然 ,也可以手动给POINTER所占的地址赋值,比如FB里IN_OUT类型的 一个数据结构,由于FB在调用时可以不分配实参,所以你可以在程序内部手动赋值,这样更灵活 在程序执行期间可以指向任意地址空间和DB块)

比如

L P##P  FB里IN_OUT类型一个复杂数据类型,UDT等

LAR1

OPEN DB10 

L DBNO

T W[AR1,P#0.0]




人生就像一场旅行!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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