台达计算问题: 点击:712 | 回复:5



错了再来一次

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 36回
  • 年度积分:1
  • 历史总积分:49
  • 注册:2007年9月12日
发表于:2007-11-23 12:53:00
楼主
   我用加法指令,把两个数相加后,和为负数(-45),存入D180.下面用乘法指令(DMUL)时,调用D180,监视时值显示为K65491,为什么D180为从负值变成正值?如下:
            ADD   D74     D170     D180
                  K1455   K-1500   K-45
            DMUL  D180    K120     D182
                  K65491           K7858920



zjq

  • 精华:1帖
  • 求助:0帖
  • 帖子:23帖 | 83回
  • 年度积分:0
  • 历史总积分:291
  • 注册:2006年9月19日
发表于:2007-11-23 16:03:00
1楼
DMUL换成MUL就行了。

连杰

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 244回
  • 年度积分:0
  • 历史总积分:406
  • 注册:2006年5月09日
发表于:2007-11-23 18:47:00
2楼
呵呵

错了再来一次

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 36回
  • 年度积分:1
  • 历史总积分:49
  • 注册:2007年9月12日
发表于:2007-11-23 19:23:00
3楼
   因为D180里的值有时会大于1500必须用DMUL指令.所以不能改为MUL指令,不知道怎么处理这种情况,请那位高人指点一下.

错了再来一次

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 36回
  • 年度积分:1
  • 历史总积分:49
  • 注册:2007年9月12日
发表于:2007-11-23 20:50:00
4楼
   上面说得对,DMUL指令改为MUL指令后,计算结果就正常了,谢谢ZJQ.    可是用DMUL指令负数为什么会变?还不是明白

zjq

  • 精华:1帖
  • 求助:0帖
  • 帖子:23帖 | 83回
  • 年度积分:0
  • 历史总积分:291
  • 注册:2006年9月19日
发表于:2007-11-24 11:32:00
5楼
你先了解一下台达32位暂存器的构成是D+1 D位组合及最高位为符号位。如果D180大于32767或小于-32768,你ADD就用DADD运算。

热门招聘
相关主题

官方公众号

智造工程师