实验一 汇编语言基础.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文档。上传文档
查看更多
天津理工大学 计算机与通信工程学院 实验报告 2014至2015学年第一学期 课程名称 单片机原理及接口技术 课程代码 0664886 学号学生姓名 俞湛 年级 12级 专业 物联网工程 教学班号 02 实验地点 7-215 实验时间 2014年11月5日第3节至第4节 实验名称 汇编语言基础 主讲教师 王晓晔 辅导教师 王晓晔 实验一80c51汇编语言编程 一、实验目的 熟悉和掌握Keil进行汇编语言调试的常用指令; 了解和掌握MOV指令在不同的寻址方式下的使用方法。 了解和掌握加、减指令在程序设计中的用法 了解和掌握逻辑指令、移位指令的功能和作用,以及此类指令的使用方法。 实验内容 1、简单程序调试 (1)传送指令 设置内部RAM的值,(30H)=40H,(40H)=10H,单步执行下列程序,检查结果。 MOVR0,#30H MOVA,@R0 MOVR1,A MOVB,@R1 STOP:SJMPSTOP 执行后:(R0)=30H,(R1)=40H,(A)=40H,(B)=10H,(30H)=40H,(40H)=10H。 (2)运算指令 单步 执行 MOVA,#0BFH MOV20H,#85H SETBC ADDA,20H MOVA,#0BFH MOV20H,#85H SETBC ADDCA,20H MOVA,#0BFH MOV20H,#85H SETBC SUBBA,20H MOVA,#0BFH MOVB,#85H MULAB SJMP$ 结果 标志 (A)=44H CY=1AC=1 OV=1P=0 (A)=45H CY=1AC=1 OV=1P=1 (A)=39H CY=0AC=0 OV=0P=0 (A)=3BH(B)=63 CY=0AC=0 OV=1P=1 (3)预先对R3和R4赋值,然后执行下列程序,检查结果。 ORG0000H LJMPMAIN ORG0050H MAIN:MOVA,R3 CLRC ADDA,R4 JCPP1 MOVR3,#00H SJMPPP2 PP1:MOVR3,#01H PP2:MOVR4,A END 执行后:(R3)=00H,(R4)=07H,(A)=07H。 2、多字节十进制数加法 被加数 加数 结果 低位 20H 67 30H 65 20H 32 21H 45 31H 72 21H 18 22H 23 32H 98 22H 22 23H 01 33H 89 23H 91 高位 图1-24字节十进制数相加 两个4字节十进制数1234567加,将其8421-BCD码按低位到高位存放在地址为20-23H、30-33H的RAM中,运算结果存放在20-23H的地址中,如上图示。 运算程序如下,ADD_BCD为多字节十进制数加法子程序的首地址。分别按“单步”和“全速”方式调试程序。检查运算结果。在“ADD_BCD子程序”的指令“DAA”处设置断点,再用“全速”方式运行,到达断点后,观察“A”的值,然后用“单步”运行,观察指令“DAA”的功能。同时理解“断点”方式调试程序的特点。 ;;;;;;;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;; MOVR0,#20H;置被加数首地址 MOVR1,#30H;置加数首地址 MOVR2,#04H;置被加数和加数的长度(字节数) ACALLADD_BCD;调用多字节十进制数加法子程序ADD_BCD STOP:SJMPSTOP;停止 ;;;;;;;;;;多字节十进制数加法子程序;;;;;;;;;; ;入口:R0、R1为被加数和加数的首地址,按低位到高位存放 ;出口:R0为运算结果的首地址,也按低位到高位存放 ADD_BCD:CLRC;进位清零 LOOP:MOVA,@R0;一字节的被加数→A ADDCA,@R1;一字节加 DAA;十进制数调整 MOV@R0,A;存一字节的运算结果 INCR0;被加数指向下一字节 INCR1;加数指向下一字节 DJNZR2,LOOP;循环控制 RET;子程序返回 END 4、实现将数据00H-0FH写入到片内RAM30H-3FH,然后将数据一次读出来,在P1.0-P1.3引脚用发光二极管显示出来。用Keil软件调试并查看片内RAM单元中数据的变化,用Proteus软件观察仿真结果。 ORG0000H LJMPMAIN ORG0030H MAIN:MOVR0,#10H MOVR1,#30H MOVA,#00H LOOP:MOV@R1,A INCR1 INCA DJNZR0,LOOP NEXT:MOVR0,#10H MOVR1,#30H LOOP1:MOVA,@R1 LCALLDISPLAY INCR1 DJNZR0,LOOP1

文档评论(0)

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

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

1亿VIP精品文档

相关文档