回复:一段STL代码,请帮忙解读一下具体的执行过程和一些指令的含义

已锁定

爱学习的我

  • 帖子

    42
  • 精华

    0
  • 被关注

    8

论坛等级:侠客

注册时间:2015-01-14

普通 普通 如何晋级?

发布于 2023-02-28 17:17:50

3楼

展开查看
以下是引用zhangli0在2023-02-28 11:54:47的发言 >1楼

以下是经过加工的代码:

 SET   

      SAVE                              // BIE setzen

      L     P##IN1                      //  输入1,指针起始地址(p#dbn.dbn.0 输入是如何转换成地址数据的?

P##IN1是间接寻址指针。这个32位的指针的每一个位的物理意义是固定的,你需要看指针的说明

      LAR1                              // in Adre?register 1 ablegen   加载到AR1          

      L     W [AR1,P#0.0]               // DB-Nr. aus Lokaldaten IN1   读取DB块号所在的地址?W是什么意思?输入如何转换的?

W是字长度,他是一个word,这句话的意思是读取AR1这里保存的db中的起始地址,P#0.0指的是偏移量是0.0的位置开始

      T     #数据源1的DB编号                    // zwischenspeichern

      OPN   DB [#数据源1的DB编号]               // Quell-DB, falls vorhanden   打开DB块

      L     D [AR1,P#2.0]               // Pointer auf String IN1 laden   D又是什么?doubleword?

      LAR1                              // ins Adre?register 1     ACCU1装载到AR1

      T     #地址寄存器IN1

      L     B [AR1,P#1.0]               // L?nge String 1 这是读取的什么?从哪里读的数据长度?

这里是读取一个字符串,字符串的开始有一个特殊字符表示字符串开始,第二个字节是字符串的长度,这里只是取了字符串的长度信息给了下面的T指令对应的变量。

      T     #IN1的字符长度          

      L     P##IN2                      // Pointer   输入2,指针起始地址(p#dbn.dbn.0)下面跟上面差不多

      LAR2                              // in Adre?register 2 ablegen

      L     W [AR2,P#0.0]               // DB-Nr. aus Lokaldaten IN1

      T     #数据源2的DB编号                    // zwischenspeichern

      OPN   DB [#数据源2的DB编号]               // Quell-DB, falls vorhanden

      L     D [AR2,P#2.0]               // Pointer auf String IN2 laden

      LAR2  

      T     #地址寄存器IN2                   // zwischenspeichern

      L     B [AR2,P#1.0]               // res. L?nge String 2

      T     #IN2的字符长度        

      L     P##RET_VAL                  // Pointer   返回值接入位置,也是指针起始地址

      LAR2                              // in Adre?register 2 ablegen

      L     W [AR2,P#0.0]               // DB-Nr. aus Lokaldaten RET_VAL

      T     #w_Temp                     // zwischenspeichern     润滑标记

      OPN   DI [#w_Temp]                // Quell-DB, falls vorhanden  源数据库(如果可用)

      L     D [AR2,P#2.0]               // Pointer auf String RET_VAL

      OD    DW#16#1000000               // Pointer-Bereichskennung DI

      LAR2                              // ins Adre?register 2

      L     B [AR2,P#0.0]               // res. L?nge Ziel

      T     #目标保存长度 


前辈,恳请赐教!

进无止境
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54623条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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