- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《微机实验》报告
实验名称 KeilC的使用与汇编语言上机操作
专业班级 姓名_______ 学号 U200914186 序号
联系方式
任务要求
1.掌握KeilC环境的使用
1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。
2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
2. 编写两个十六位数的加法程序。
有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
二、设计思路
对于任务要求(1),由于实验代码已知,操作人员只需在Keil软件上进行运行调试,在此不一一赘述,下面仅针对实验要求(2)叙述我的设计思路。
关于编写两个十六位数的加法程序,在低位相加时,直接采用指令ADD然后存数即可,在处理高位时,由于可能存在进位,因此在相加时应采用指令ADDC将被加数、加数、以及低位到高位的进位相加然后存数,而且在处理该问题时应考虑到两个十六位相加可能会出现第十七位,故应另辟一个地址单元存放最高位的数。
三、资源分配
根据此程序的要求。两个十六位无符号数,分别存放在从20H和30H开始的数据区中;和存于R3(高4八位)和R4(低八位),进位位存于R2。
流程图
源代码 (含文件头说明、资源使用说明、语句行注释)
File name: test.asm
Description: 两个十六位数的加法程序
Date: 2011/9/27
Designed by: ChenXin
Source used: 20H: 加数A的低位
21H: 加数A的高位
30H: 加数B的低位
31H: 加数B的高位
R4: 和的低位
R3: 和的高位
R2: 和的进位
ORG 0000H
LJMP MAIN
ORG 0000H
MAIN: CLR C ;将进位位清零
MOV 20H,#10H
MOV 21H,#2AH
MOV 30H,#21H
MOV 31H,#00H
MOV R0,20H ;将A中的地位存入R0中
MOV A,30H ;将B中的地位存入A累加器中
ADDC A,R0 ;将低位相加
MOV R4,A ;其和存入R4中
CLR A ;对累加器A清零
MOV R0,21H ;将A中的高位存入R0中
MOV A,31H ;将B中的高位存入A累加器中
ADDC A,R0 ;将高位以及进位位相加
MOV R3,A ;其和存入R4中
CLR A ;对累加器A清零
ADDC A,#0 ;将进位存入A.7
MOV R2,A ;将进位存入R2.7
SJMP $
END
六、程序测试方法与结果、软件性能分析
手动输入改变两个加数的值,均可得到正确的和。对于不同的加数,分别在调试过程中跟踪A,R4,R3,R2的值,均可得到对应的预期的数值。因此,可以说,该程序的源代码是放心、可靠、经过检验的,该程序是合格的。
七、心得与体会
本次实验,在经历安装Keil、调试已知源代码、编写源代码后,对Keil的运行环境有了一定认知,能够建立一个工程编写一些简单的小程序,并进行相应的调试。同时在学习过程中也加深了我对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。
附 思考题
1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?
答:电击调试后,在工作窗左侧的Register中可以清晰的观察到工作寄存器R0-R7、特殊寄存器和PSW各位的空间内容;在右下角Memory1中输入D+片内地址,即可查看片内RAM的空间内容;输入X+片外地址即可查看片外RAM的空间内容;。。。Disassembly窗口的作用是显示程序计数器PC指向的地址。
字节拆分、合并还有哪些方法,举一例说明。
ORG 0000H
文档评论(0)