- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《微机实验》报告
PAGE 1
实验名称 Keil的使用与汇编语言上机操作 成 绩
指导教师 *****
专业班级 光电1507 姓 名 **** 学 号 ********
联系电话
任务要求
熟悉Keil环境,通过在Keil环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。
掌握Keil环境的使用
字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。
数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
编写多个十六位数的加法程序:有4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高八位在后。要求:和存于R3(高八位)和R2(低八位),进位位存于R4。
设计思路
第一步是对相应的片内RAM存储空间置数
第二步是对前两个数低八位相加,不考虑进位;对高八位相加,考虑进位,若有进位信号,则对R4进行自加一处理
第三步是设置循环,对剩下的数进行同样的加法运算
资源分配
20H、22H、24H、26H存放低八位
21H、23H、25H、27H存放高八位
RO、R1数据指针
R2、R3分别存放结果低八位、高八位
R4存放进位位
R5存放循环判断数
流程图
五、源代码 (含文件头说明、语句行注释)
ORG 0000H
LJMP START;长跳转至START执行程序
ORG 0100H
START: MOV SP, #40H;给堆栈指针赋初值
MOV 20H, #0FFH;第一个数低八位
MOV 21H, #0FFH;第一个数高八位
MOV 22H, #11H;第二个数低八位
MOV 23H, #11H;第二个数高八位
MOV 24H, #11H;第三个数低八位
MOV 25H, #11H;第三个数高八位
MOV 26H, #11H;第四个数低八位
MOV 27H, #11H;第四个数高八位
MOV R0, #22H
MOV R1, #23H
MOV R2, 20H ;存低八位
MOV R3, 21H ;存高八位
MOV R4, #00H;存进位位
MOV R5, #3;循环次数
LOOP: CLR C
MOV A, @R0
ADD A, R2;低八位相加
MOV R2, A;低八位存于R2中
MOV A, @R1
ADDC A, R3;高八位相加
MOV R3, A ;高八位存于R3中
JC AA ;若有进位位,则转AA,对R4进行自加1操作
BB: MOV A,R0
ADD A,#2
MOV R0,A
MOV A,R1
ADD A,#2
MOV R1,A
DJNZ R5, LOOP;判断循环是否结束
HERE: SJMP HERE
AA: INC R4
SJMP BB
六、程序测试方法与结果
考虑无进位情况:
考虑有进位情况:
七、思考题
怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?
工作寄存器、SFR的内容可在Registers窗口中查看;
片内RAM、片外RAM、程序代码空间的内容可在Memorry窗口中,在Address栏中键入空间类型和地址来查看;
Disassembly窗口的作用是显示编译之后转化成的汇编代码。
字节拆分、合并还有哪些方法,举一例说明。
字节拆分可以通过ANL指令来达到,比如说要拆分#49H,可以用:
MOV A,#49H
ANL A,#OFH
MOV 30H,A
MOV A,#49H
SWAP A
ANL A,#0FH
MOV 31H,A
字节合并可以用ORL指令来实现
SWAP 31H
ORL 31H,30H
若按递减1规律填充数据块,应如何修改程序?
只需将INC A 改为DEC A 即可。
若从7010H单元开始,连续填充20个字节,应该如何修改程序?
将MOV DPTR, #7000H改为 MOV DPTR, #7010H
将CJNE R0, #00H, FILL1改为CJNE R0, #20, FILL1
若完成双字节BCD码加法,应如何修改程序?
在ADD A 后面加DA
您可能关注的文档
最近下载
- 广东省紧密型县域医共体(已挂牌)名单明细表1126.doc VIP
- [产品_解决方案概述]华为FusionAccess桌面云解决方案6.2概述.pdf VIP
- 《华科概率论与数理统计课件——概率论》.ppt VIP
- 图集规范-浙江图集-2010浙G22管桩.pdf VIP
- 中建八局高大模板施工标准化图册(盘扣架脚手架)2024年 .pdf VIP
- 一种竹质柱状活性炭及其制备方法和应用.pdf VIP
- Mogas金属硬密封球阀的构造特点.docx VIP
- T-CECS 10107-2020超高性能混凝土(UHPC)技术要求(OCR).pdf
- 2025年高考真题解析课件:2025年全国新高考二卷英语读后续写(课件).pptx VIP
- 《江南逢李龟年》课件.pptx VIP
文档评论(0)