[求助]帮忙看个程序

[复制链接]
查看1425 | 回复1 | 2008-1-28 13:10:00 | 显示全部楼层 |阅读模式

L DW#16#35 //3216进制数35存入ACC1
  T MD2 //这个值再存入MD2,这是个32位的位存储区域
  L +10 //16位整数10存入ACC13216进制数35自动移动到ACC2
  T MW100 //这个值再存入MW100,这是个16位的位存储区域
  OPN DBW[MW100] //打开DBW10。这里的[MW100]就是个单字指针,存放指针的区域是M区,
   MW100中的值10,就是指针间接指定的地址,它是个16位的值!
  --------
  L L#+10 //32位形式,把10放入ACC1,此时,ACC2中的内容为:16位整数10
  T MD104 //这个值再存入MD104,这是个32位的位存储区域
  A I[MD104] //I1.2进行与逻辑操作!
  =DIX[MD2] //赋值背景数据位DIX6.5
  --------
  A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态
  =Q[MD2] //赋值给Q6.5
  --------
  A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态
  =Q[MW100] //错误!!没有Q10这个元件

以上是程序内容:

请问:A I[MD104] //I1.2进行与逻辑操作! 这个语句中,为什么I[MD104] 会是I1.2

faye1024 | 2008-1-28 13:26:00 | 显示全部楼层

不好意思,我知道了

通过L L#+10 ,我们知道存放在MD104中的值应该是:
  MD1040000 0000 0000 0000 0000 0000 0000 1010
  当作为双字指针时,就应该按照3-18bit指定byte0-2bit指定bit来确定最终指令要操作的地址,因此:
  0000 0000 0000 0000 0000 0000 0000 1010 = 1.2

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则