一样的程序,不一样的结果? 点击:1080 | 回复:13



bg7mka

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 261回
  • 年度积分:0
  • 历史总积分:701
  • 注册:2006年6月28日
发表于:2007-11-22 23:35:00
楼主
LDF X0                      LDF X1
CNT C0 K3                   CNT C1 K3
ADD D1 D0 D1                ADD D3 D2 D3
LD X0                       LD X1    
TMR T0 K100                 TMR T1 K100
LD M1000                    LD M1000
MOV T0 D0                   MOV T1 D2
LDP C0                      LDP C1
MOV D1 D2                   MOV D3 D4
DIV D2 K3 D2                DIV D4 K3 D4
RST C0                      RST C1
                            END
两个相同的程序一个在前,一个在后,都是算三次时间的平均值的,但是前面的程序D1可以累加到3次,后面的程序D3只能累加到2次,为什么呢?



zjq

  • 精华:1帖
  • 求助:0帖
  • 帖子:23帖 | 83回
  • 年度积分:0
  • 历史总积分:291
  • 注册:2006年9月19日
发表于:2007-11-23 12:16:00
1楼
你把D3 换掉试试,这个暂存器被上次的DIV的余数占用了

苦学

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 1034回
  • 年度积分:2
  • 历史总积分:2430
  • 注册:2005年3月13日
发表于:2007-11-23 14:12:00
2楼
学习了

蓝天月亮

  • 精华:0帖
  • 求助:0帖
  • 帖子:37帖 | 1447回
  • 年度积分:0
  • 历史总积分:3594
  • 注册:2007年10月22日
发表于:2007-11-23 14:22:00
3楼
应该是扫描上的问题

连杰

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

xuminghui

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 29回
  • 年度积分:0
  • 历史总积分:91
  • 注册:2006年6月22日
发表于:2007-11-23 20:27:00
5楼
什么时候了,还用编程语言,看了很累哦

heidai

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 1835回
  • 年度积分:0
  • 历史总积分:2824
  • 注册:2007年5月23日
发表于:2007-11-23 21:00:00
6楼
不太清楚

bg7mka

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 261回
  • 年度积分:0
  • 历史总积分:701
  • 注册:2006年6月28日
发表于:2007-11-23 22:42:00
7楼
呵呵~~~~~~~我也想贴图啊!可是不会弄~~~~~
前面三个程序OK,最后一个NG

搞了三天,最后把原来连着的D寄存器中间加了个空的寄存器,
也就是改成了
    LDF X0                      LDF X1
CNT C0 K3                   CNT C1 K3
ADD D1 D0 D1                ADD D4 D2 D4
LD X0                       LD X1    
TMR T0 K100                 TMR T1 K100
LD M1000                    LD M1000
MOV T0 D0                   MOV T1 D2
LDP C0                      LDP C1
MOV D1 D2                   MOV D4 D6
DIV D2 K3 D2                DIV D6 K3 D6
RST C0                      RST C1
就好了,很郁闷哦~~~~~~~~~`
请中达的师傅帮忙研究一下,以免以后再出错

kuishe

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 48回
  • 年度积分:0
  • 历史总积分:251
  • 注册:2003年1月16日
发表于:2007-11-25 00:27:00
8楼
寄存器的值是32位的,要占用两个寄存器,

bg7mka

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 261回
  • 年度积分:0
  • 历史总积分:701
  • 注册:2006年6月28日
发表于:2007-11-25 18:34:00
9楼
我用的是16位的指令?为什么要用32位的寄存器呢?

聚沙成塔

  • 精华:0帖
  • 求助:1帖
  • 帖子:85帖 | 654回
  • 年度积分:0
  • 历史总积分:1083
  • 注册:2006年4月15日
发表于:2008-01-13 14:05:00
10楼
DIV D2 K3 D2 
这条指令的结果得数放在D2里,而余数放在D3里.

bg7mka

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 261回
  • 年度积分:0
  • 历史总积分:701
  • 注册:2006年6月28日
发表于:2008-01-14 22:59:00
11楼
谢谢各位的指教!

haha_gao

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 635回
  • 年度积分:0
  • 历史总积分:848
  • 注册:2004年9月29日
发表于:2008-01-31 15:46:00
12楼
大家应注意一点即使使用单字计算时最好也只用偶数或奇数
即:D1、D3、D5…………

他山石

  • 精华:3帖
  • 求助:3帖
  • 帖子:169帖 | 2343回
  • 年度积分:4
  • 历史总积分:5792
  • 注册:2004年8月29日
发表于:2008-01-31 20:54:00
13楼
学习了

热门招聘
相关主题

官方公众号

智造工程师