keil的使用与汇编语言上机操作.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

wx171113 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档