屈子行舟
级别: 正式会员
精华主题: 0
发帖数量: 4 个
工控威望: 94 点
下载积分: 781 分
在线时间: 10(小时)
注册时间: 2014-11-02
最后登录: 2023-04-05
查看屈子行舟的 主题 / 回贴
楼主  发表于: 2015-07-23 17:50
有这么一段STL语言编的程序,看不懂,求高人指点,先谢谢了!!!
       L     P##VISU_2                   // Load VisONarameter address
      TAR2                              // Load offset instance DB
      SLD   8                           //
      SRD   8
      +D    
      LAR1                              // Prepare address register AR1

      L     0
      T     D [AR1,P#0.0]               // First clear Visu bits
      T     #DummyDword

      L     #Stat_Stopper.VISU_2
      T     #DummyDword
现在我就是看不懂 SLD   8, SRD   8,为什么刚向左移8位,怎么又向有移8位,这样一左一右,不等于没移吗?还有 +D 是什么相加啊?希望前辈们指点下。
[ 此帖被屈子行舟在2015-07-23 17:57重新编辑 ]
king_king2
级别: 略有小成
精华主题: 0
发帖数量: 92 个
工控威望: 218 点
下载积分: 537 分
在线时间: 66(小时)
注册时间: 2014-03-29
最后登录: 2024-07-31
查看king_king2的 主题 / 回贴
1楼  发表于: 2015-07-25 11:47
一个32位数 先左移8位,后右移8位怎么会相同呢?左移8位后高8位会用0填充。再右移0位那么低8位就会用0填充。你说能一样么?其实原作者的意图只是低8位清零!像
A & 0xFFFF_FF00。 +D是32位操作没错。 对ACC1 ACC2进行操作 .