单片机实验报告KeilC的使用与汇编语言上机操作

上传人:无*** 文档编号:135049403 上传时间:2022-08-14 格式:DOC 页数:9 大小:89.50KB
收藏 版权申诉 举报 下载
单片机实验报告KeilC的使用与汇编语言上机操作_第1页
第1页 / 共9页
单片机实验报告KeilC的使用与汇编语言上机操作_第2页
第2页 / 共9页
单片机实验报告KeilC的使用与汇编语言上机操作_第3页
第3页 / 共9页
资源描述:

《单片机实验报告KeilC的使用与汇编语言上机操作》由会员分享,可在线阅读,更多相关《单片机实验报告KeilC的使用与汇编语言上机操作(9页珍藏版)》请在装配图网上搜索。

1、微机实验报告实验名称 KeilC的使用与汇编语言上机操作指导教师 专业班级 姓名 学号 序号联系方式 一、 任务要求 实验目的:熟悉KeilC环境,通过在KeilC环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。实验内容:1.掌握KeilC环境的使用 1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。 2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2. 编写两个十六位数的加法程序。有两个十

2、六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。二、 设计思路1. 掌握KeilC环境的使用1) 字节拆分、合并:字节拆分要将BCD码转换为2字节ASCII,需将BCD码拆为两部分,分别加30H。具体先用XCHD语句将BCD码与00H交换低位,“高位”需先用SWAP语句将高低位交换,再加30H;“低位”直接加30H。字节合并同理,需减30H再合并。2) 数据块填充:指针在7000H,利于循环语句递增填充,A寄存器中存放要填充的数据,DPTR数据指针指向片外,R0计数。用CJNE构成循环,循环中A、DPTR、R

3、0都加12. 编写两个十六位数的加法程序两数低位分别存于20H、30H,高位存于21H、31H。用ADD语句将低位相加,存于R4;用ADDC语句将高位和进位Cy相加,存于R3;存进位需先将A寄存器清零,再用ADDC语句将A、00H和Cy相加,存于R2。三、 资源分配本程序数据均存于片内RAM中,有两个十六位无符号数,低位分别存于20H、30H中,高位分别存于21H、31H中。高八位和存于R3中,低八位和存于R4中,进位位存于R2中。四、 流程图 五、源代码 ORG 0000H MAIN: MOV R0,#20H;设置第一个数地址指针 MOV R1,#30H;设置第二个数地址指针 MOV A,R

4、0;取低位ADD A,R1;两数低位相加MOV R4,A ;存“和”低位INC R0INC R1MOV A,R0;取高位ADDC A,R1;两数高位相加MOV R3,A ;存“和”高位CLR AADDC A,#0MOV R2,A ;存进位HERE: SJMP HERE ;踏步 END ;结束Program Size: data=8.0 xdata=0 code=18精简后ORG 0000H MAIN: MOV A,20H; 取低位ADD A,30H; 两数低位相加MOV R4,A ; 存“和”低位MOV A,21H; 取高位ADDC A,31H; 两数高位相加MOV R3,A ;存“和”高位C

5、LR AADDC A,#0MOV R2,A ; 存进位HERE: SJMP HERE ; 踏步 ENDProgram Size: data=8.0 xdata=0 code=16六、 程序测试方法与结果、软件性能分析1.1字节拆分、合并调试 拆分时,如图31H、32H中内容为34和39,正常 合并时,如图33H中内容又变为了491.2数据块填充调试执行完改程序后片外7000H到70FFH中的数据如下图3. 两个十六位数的加法程序测试方法:修改片上RAM中20H、21H、30H、31H数据,查看R2、R3、R4数据。如图,令20H上为09H、21H上为90H、30H上为40H、31H上为81H运

6、行结果:如图R2=01H,R3=11H,R4=49H性能分析精简前Program Size: data=8.0 xdata=0 code=18运行时间t1=0.00000650s精简后Program Size: data=8.0 xdata=0 code=16运行时间t1=0.00000450s七、 思考题1 怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用? 按Start/stop Debug Session编译程序点击ViewRegisters Window,查看工作寄存器点击ViewMemory Windows,选择Memory1

7、,弹出Memory1窗口,在Address栏中介入d、x、c分别查看片内RAM、片外RAM及程序代码空间内容Disassembly 窗口显示编译之后对应的汇编代码。2 字节拆分、合并还有哪些方法,举一例说明。还可以用与运算拆分利用XCHD语句合并 ORG 0000HLJMP MAINORG 0100HMAIN: MOV 30H,#49H MOV A, 30H ANL A, #F0H ;取高位 SWAP A ORL A, #30H ;高位转换为ASCII码MOV 31H, A ;结果存于31H单元 MOV A, 30H ANL A, #0FH ;取低位 ORL A, #30H ;低位转换为ASC

8、II码MOV 32H, A ;结果存于32H单元 MOV A,31HSWAP A MOV RO,32H XCHD A,R0 MOV 30H,A ;合并存于30HHERE: SJMP HERE ;踏步 END 4. 若按递减1规律填充数据块,应如何修改程序? ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,#40HFILL: MOV A #FFH MOV R0, #00H ;设循环计数器 MOV DPTR, #7000H ;设数据指针FILL1:MOVX DPTR, A ;传送到片外RAM DEC A ;A内容减1INC DPTR ;修改数据指针 INC R0

9、 ;修改循环计数器 CJNE R0, #00H, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步 END5. 若从7010H单元开始,连续填充20个字节,应该如何修改程序? ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV SP,#40HFILL:CLR A ;A寄存器清零MOV R0, #00H ;设循环计数器 MOV DPTR, #7010H ;设数据指针FILL1:MOVX DPTR, A ;传送到片外RAM INC A ;A内容加1INC DPTR ;修改数据指针 INC R0 ;修改循环计数器 CJNE R0, #14H, FILL1

10、;判断是否结束HERE:SJMP HERE ;原地踏步 END 6. 若完成双字节BCD码加法,应如何修改程序?需要在ADD和ADDC后加上DA,进行十进制修正八、 实验小结 通过本次试验,我们掌握KeilC环境的使用,熟悉了软件的运行环境和调试方法。由于是第一次使用KeilC软件,而且它是全英文的,所以一开始感觉还有点困难。不过在掌握步骤后,就会发现KeilC其实很方便,可以看到执行每一步代码的寄存器、端口和各个存储结构中的数据变化,对于理解单片机有很大的帮助。通过程序的调试和编写,我们对BCD码、ASCII码和机器码之间的关系也有更深入的了解。同时也对进制、字节、位等概念有了更透彻的理解。9 / 9文档可自由编辑打印

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!