我是新手 ,最近在学指针编程 可是 any指针的有些地方不太明白,希望高手指点

OPN   DB [LW 4]
//打开数据块
//数据块起始地址去掉数据区   标识部分
      L     LD     6
      L     DW#16#FFFFFF
      AD    
      T     LD    10
//计算最后一个储存单元指针保存至ld 10
      L     LW     2
      L     2
      *I    
      T     LD    14
      L     L#2
      -D    
      SLD   3
      L     LD    10
      +D    
      T     LD    10
//外循环计数lw20,循环次数为(数据个数-1)次
      L     LW     2
      L     1
      -I    
nxt2: T     LW    20
      L     LD    10
      LAR1  
      L     LW    20
//嵌套循环计数lw18,循环次数为(lw20)次

nxt1: T     LW    18
      TAR1  
      L     P#2.0
      -D    
      LAR1  
//后一单元数据小于前一单元数据?
      L     DBW [AR1,P#2.0]
      L     DBW [AR1,P#0.0]
      <I    

      JCN   l1
//否,交换2单元数据
      L     DBW [AR1,P#2.0]
      L     DBW [AR1,P#0.0]
      T     DBW [AR1,P#2.0]
      POP   
      T     DBW [AR1,P#0.0]
l1:   L     LW    18
      LOOP  nxt1
      L     LW    20
      LOOP  nxt2
      JU    exit
//错误码1,any指针有错
err1: L     1
      T     #error
      JU    exit
//错误码2,输入数据区不是db块
err2: L     2
      T     #error
      JU    exit
//错误码3,输入数据类型不是Int
err3: L     3
      T     #error
exit: NOP   0
  
这个冒泡排序法,我现在就是不懂
   L     LD     6
      L     DW#16#FFFFFF
      AD    
      T     LD    10
这个注释写的/数据块起始地址去掉数据区标识部分 ,那这个数据区在any的第六个字节,它是以数据存储的吗,如果是那是以什么方式存储进去的,我的理解就是DB块的DW,W,B,等标识,那6个f二进制都是1,它是怎么综合的?

问题补充:
L     LB     6
      L     B#16#84
      ==I   
      JCN   err2
这是上面往第6哦字节写的数据,字节16进制的84二进制就是10000100而与FFFFFF相与后没有意义啊,lb6的字节还是10000100啊,这是我不明白的地方

图片说明:

我是新手 ,最近在学指针编程 可是 any指针的有些地方不太明白,希望高手指点   

最佳答案

原程序是先判断写入的变量是不是DB块的变量,不是就报错误2,是的话就把LB6中的内容去掉,就是与FFFFFF相与的程序。 DW#16#FFFFFF表示的是32位的,与LD6相与后正好把高字节的内容(即表示数据区含义的部分)去掉了。而你补充的LB6是保存变量的数据区,不同的数据区对应的数值不同,见你的文档。因为程序中使用内部区域间接寻址,所以把LB6的内容去掉了。使用交叉区域间接寻址的话,这步就不用了,但下面的寻址表示改为W [AR1,P#2.0]。

提问者对于答案的评价:
我监控看了下AC1真变成0了,不过我还是没弄明白1和1与应该还是1啊,我单独,的这运行一下相与这结果84与6个F相与结果还是84就不是0,

最佳答案作者回复:
原内容是DW#16#84XXXXXX,与DW#16#FFFFFF相与后是DW#16#00XXXXXX,这是AC1的内容。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc232207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午12:57
下一篇 2018年12月1日 下午12:57

相关推荐