微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机第二次作业

单片机第二次作业

时间:11-25 来源:互联网 点击:
作业:将A扩大十倍(A值较小,不溢出


,此题方法较多,根据材料有三种做法,下面就一一列出。(既然此题如此繁琐,就请大家给个好评吧!
当然刚开始还是新建文件和工程,大家都懂得!那么我就直接粘贴啦!
1、先fileànew建asm文件6.asm
方法一:MOV B,#10
MUL AB
END
为了调试时看数据,预先在A中赋值为01H(既然A值较小,不溢出,那么就选个小一点的吧,简单嘛!)所以程序前加:
MOV A,#01H
2、建新工程,Projectànewproject,选AtemlàAT89C51,导入文件6.asm。
注意,对初学者,一个工程里只能有本程序6.asm,无关的程序要删除,新试验一个程序最好重新建工程,以保证一个工程里只有你要试验的那一个程序。
3、可见程序


4、编译通过后,点debug下的start/stop开始调试,step和stepover都是单步调试,step是遇到子程序或中断也要进入进行单步调试,stepover是遇到子程序或中断当一句一次执行完。本程序物子程序,二者是一样的。我们执行一句得到:


可见A中的值变为01H,B中还为0,

B中数据已变为0ah,再执行一步,可见:

.
A与B相乘,A中存放低八位。所以A中的值为0AH,B中的值为00H.
,可知已经把A扩大了十倍,这个程序简单吧?!不过,别急,有简单就有复杂的,不过谁好谁坏就不知道了,总之能用就行。

方法二:新建文件和工程就不罗嗦了,直接看程序吧!

呵呵,是不是复杂了一些?不过,别怕。一步步来看。执行一步可见:


可见A中的值变为01H,B中还为0,

可见B中的值也变为01H。接着执行:

可见A中的值变为02H。接着执行:

可见:RO中的值变为02H。接着执行:


可见:A中的值变为04H。接着执行:


可见:A中的值变为05H。接着执行:


可见:B中的值也变为05H。接着执行:


哈哈,是不看到A中的值变为0AH了,那就对了!至此,第二种方法也搞定!

,有点困了,不过还是要把它写完吧!加快速度!!!

第三种方法:照样是直接看程序啦!


嗯,不是很复杂,一会就搞定了!执行一步:



可见A中的值变为01H,B中还为0,

可见:B中的值也变为01H。接着执行:


对A进行循环左移,相当于乘二,所以A中的值为02H.接着执行:


原因如上,就不说了。所以A中的值为04H.接着执行:


A和B相加,结果放到A中,所以A中的值为05H.接着执行:


还是循环左移,大家都懂吧,所以就不说啦!直接得到结果了。

,还行吧,三种方法都实现了A扩大十倍,只不过这只适合不溢出的情况。OK!写完了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top