单片机第二次作业
时间:11-25
来源:互联网
点击:
作业:将A扩大十倍(A值较小,不溢出)
,此题方法较多,根据材料有三种做法,下面就一一列出。(既然此题如此繁琐,就请大家给个好评吧!![](../img/eep/emb/emb-60584d2mcxybjnx2.jpg)
)
当然刚开始还是新建文件和工程,大家都懂得!那么我就直接粘贴啦!
1、先fileànew 建asm文件6.asm
方法一: MOV B,#10
MUL AB
END
为了调试时看数据,预先在A中赋值为01H(既然A值较小,不溢出,那么就选个小一点的吧,简单嘛!)所以程序前加:
MOV A,#01H
2、建新工程,Projectànew project ,选AtemlàAT89C51 ,导入文件6.asm。
注意,对初学者,一个工程里只能有本程序6.asm,无关的程序要删除,新试验一个程序最好重新建工程,以保证一个工程里只有你要试验的那一个程序。
3、可见程序
![](../img/eep/emb/emb-60586d33nxntdjqx.jpg)
4、编译通过后,点debug下的start/stop开始调试, step 和step over都是单步调试,step是遇到子程序或中断也要进入进行单步调试,step over是遇到子程序或中断当一句一次执行完。本程序物子程序,二者是一样的。我们执行一句得到:
![](../img/eep/emb/emb-60587crvedf3oh4w.jpg)
可见A中的值变为01H,B中还为0,![](../img/eep/emb/emb-60588eluvoa1qfui.jpg)
B中数据已变为0ah,再执行一步,可见:
.![](../img/eep/emb/emb-605894bphdkk3cwo.jpg)
A与B相乘,A中存放低八位。所以A中的值为0AH,B中的值为00H.
,可知已经把A扩大了十倍,这个程序简单吧?!不过,别急,有简单就有复杂的,不过谁好谁坏就不知道了,总之能用就行。
方法二:新建文件和工程就不罗嗦了,直接看程序吧!
![](../img/eep/emb/emb-60591cb4jy3whlrv.jpg)
呵呵,是不是复杂了一些?不过,别怕。一步步来看。执行一步可见:
![](../img/eep/emb/emb-60592z1nzbzgoqtp.jpg)
可见A中的值变为01H,B中还为0,![](../img/eep/emb/emb-605931d2wewi0xcj.jpg)
可见B中的值也变为01H。接着执行:![](../img/eep/emb/emb-60594d1etkmaoe33.jpg)
可见A中的值变为02H。接着执行:![](../img/eep/emb/emb-605951sbpje1rkja.jpg)
可见:RO中的值变为02H。接着执行:
![](../img/eep/emb/emb-60596zdb1vsgoue5.jpg)
可见:A中的值变为04H。接着执行:
![](../img/eep/emb/emb-60597sns4glytl5w.jpg)
可见:A中的值变为05H。接着执行:
![](../img/eep/emb/emb-60598c1vhjn2itzg.jpg)
可见:B中的值也变为05H。接着执行:
![](../img/eep/emb/emb-60599501oc51mtpo.jpg)
哈哈,是不看到A中的值变为0AH了,那就对了!至此,第二种方法也搞定!![](../img/eep/emb/emb-60600kiwbatcjc5j.jpg)
,有点困了,不过还是要把它写完吧!加快速度!!!
第三种方法:照样是直接看程序啦!
![](../img/eep/emb/emb-60602jeso0kjm5wi.jpg)
嗯,不是很复杂,一会就搞定了!执行一步:
![](../img/eep/emb/emb-60603voyvmcltkld.jpg)
可见A中的值变为01H,B中还为0,![](../img/eep/emb/emb-60604u5xycy5zbzz.jpg)
可见:B中的值也变为01H。接着执行:
![](../img/eep/emb/emb-60605cskldn2iih1.jpg)
对A进行循环左移,相当于乘二,所以A中的值为02H.接着执行:
![](../img/eep/emb/emb-60606oxeuwm0vaqo.jpg)
原因如上,就不说了。所以A中的值为04H.接着执行:
A和B相加,结果放到A中,所以A中的值为05H.接着执行:
![](../img/eep/emb/emb-60608rvv1pnn5ydu.jpg)
还是循环左移,大家都懂吧,所以就不说啦!直接得到结果了。
,还行吧,三种方法都实现了A扩大十倍,只不过这只适合不溢出的情况。OK!写完了
![](../img/eep/emb/emb-60583srtd3yvkdsv.jpg)
![](../img/eep/emb/emb-60584d2mcxybjnx2.jpg)
![](../img/eep/emb/emb-60585clhohwscsfl.jpg)
当然刚开始还是新建文件和工程,大家都懂得!那么我就直接粘贴啦!
1、先fileànew
方法一:
为了调试时看数据,预先在A中赋值为01H(既然A值较小,不溢出,那么就选个小一点的吧,简单嘛!)所以程序前加:
2、建新工程,Projectànew
3、可见程序
![](../img/eep/emb/emb-60586d33nxntdjqx.jpg)
4、编译通过后,点debug下的start/stop开始调试,
![](../img/eep/emb/emb-60587crvedf3oh4w.jpg)
可见A中的值变为01H,B中还为0,
![](../img/eep/emb/emb-60588eluvoa1qfui.jpg)
B中数据已变为0ah,再执行一步,可见:
.
![](../img/eep/emb/emb-605894bphdkk3cwo.jpg)
A与B相乘,A中存放低八位。所以A中的值为0AH,B中的值为00H.
![](../img/eep/emb/emb-60590ypltjve3xve.jpg)
方法二:新建文件和工程就不罗嗦了,直接看程序吧!
![](../img/eep/emb/emb-60591cb4jy3whlrv.jpg)
呵呵,是不是复杂了一些?不过,别怕。一步步来看。执行一步可见:
![](../img/eep/emb/emb-60592z1nzbzgoqtp.jpg)
可见A中的值变为01H,B中还为0,
![](../img/eep/emb/emb-605931d2wewi0xcj.jpg)
可见B中的值也变为01H。接着执行:
![](../img/eep/emb/emb-60594d1etkmaoe33.jpg)
可见A中的值变为02H。接着执行:
![](../img/eep/emb/emb-605951sbpje1rkja.jpg)
可见:RO中的值变为02H。接着执行:
![](../img/eep/emb/emb-60596zdb1vsgoue5.jpg)
可见:A中的值变为04H。接着执行:
![](../img/eep/emb/emb-60597sns4glytl5w.jpg)
可见:A中的值变为05H。接着执行:
![](../img/eep/emb/emb-60598c1vhjn2itzg.jpg)
可见:B中的值也变为05H。接着执行:
![](../img/eep/emb/emb-60599501oc51mtpo.jpg)
哈哈,是不看到A中的值变为0AH了,那就对了!至此,第二种方法也搞定!
![](../img/eep/emb/emb-60600kiwbatcjc5j.jpg)
![](../img/eep/emb/emb-60601u4itq2ispn2.jpg)
第三种方法:照样是直接看程序啦!
![](../img/eep/emb/emb-60602jeso0kjm5wi.jpg)
嗯,不是很复杂,一会就搞定了!执行一步:
![](../img/eep/emb/emb-60603voyvmcltkld.jpg)
可见A中的值变为01H,B中还为0,
![](../img/eep/emb/emb-60604u5xycy5zbzz.jpg)
可见:B中的值也变为01H。接着执行:
![](../img/eep/emb/emb-60605cskldn2iih1.jpg)
对A进行循环左移,相当于乘二,所以A中的值为02H.接着执行:
![](../img/eep/emb/emb-60606oxeuwm0vaqo.jpg)
原因如上,就不说了。所以A中的值为04H.接着执行:
![](../img/eep/emb/emb-606071blvzupberf.jpg)
A和B相加,结果放到A中,所以A中的值为05H.接着执行:
![](../img/eep/emb/emb-60608rvv1pnn5ydu.jpg)
还是循环左移,大家都懂吧,所以就不说啦!直接得到结果了。
![](../img/eep/emb/emb-60600kiwbatcjc5j.jpg)
单片机溢 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)