华中科技大学单片机实验一报告_第1页
华中科技大学单片机实验一报告_第2页
华中科技大学单片机实验一报告_第3页
华中科技大学单片机实验一报告_第4页
华中科技大学单片机实验一报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《单片机实验》报告实验名称KeilC的使用与汇编语言上机操作指导教师刘冬生专业班级姓名学号联系方式任务要求1.掌握KeilC环境的使用1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2.编写两个十六位数的加法程序。有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。设计思路对于两个程序的调试,由于代码已经给出,只需利用软件进调试。自己拆分程序:数字填充程序:对于16位无符号数的加法,可以先低位相加,再高位相加,分别存入相应地址。低位相加时,使用ADD指令即可,而在高位相加时,应考虑进位,故使用ADDC指令,考虑到高位相加也可能产生进位,故分配另一个地址存放。资源分配根据题目的条件,将加数与被加数分别存放在以20H、30H开始的数据区中,然后将二者之和存放于寄存器R3(高8位)、R4(低8位),进位位存放于R2中。流程图开始结束存储数据低位相加,结果存入R4高位相加,结果存入R3进位存入R2开始结束存储数据低位相加,结果存入R4高位相加,结果存入R3进位存入R2源代码Filename:add1.asmDescription:两个16位数加法的程序Date:2013/11/20Designedby:zydSourceused:20H:加数A的低位21H:加数A的高位30H:加数B的低位31H:加数B的高位R4:和的低位R3:和的高位R2:和的进位位ORG0000HLJMPSTARTORG0100HSTART:MOV20H,#35H;将加数存放到相应的内存中MOV21H,#88HMOV30H,#77HMOV31H,#55HMOVR0,#20H;以R0作为被加数的地址索引MOVR1,#30H;以R1作为加数的地址引索引MOVA,@R0ADDA,@R1;低字节相加MOVR4,A;存放低字节之和至寄存器R4INCR0INCR1;地址索引加1MOVA,@R0ADDCA,@R1;高字节相加带进位位MOVR3,A;高字节之和存入R3CLRA;将A清零ADDCA,#00HMOVR2,A;将进位位存入R2END六.程序测试方法与结果、软件性能分析测试方法:自己设定两个加数,运行程序,观察结果是否正确。在调试过程中,跟踪A、R4、R3、R2的值,看是否与预期相同。结果如下图:结果表明各项指标均与预期相符,程序正确。思考题:怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly窗口有何作用?答:点击调试后,在左侧Register窗口中可以清晰的看到,工作寄存器R0-R7,特殊功能寄存器SFW,和PSW中的内容。在右下角Memory窗口中,输入d:0x____可以看片内RAM的内容;输入x:0x____可以查看片外RAM的内容。输入c:0x____可以查看程序代码空间内容。Disassembly窗口的作用是显示每一步指令的执行情况,包括源代码的储存位置机器码和相应的助记符。字节拆分、合并还有哪些方法,举一例说明。答:可以使用逻辑运算类指令屏蔽高四位和第四位,再对第四位和高四位进行操作,然后利用SWAP指令,就可以完成字节的拆分和合并。不妨设20H单元中有待操作数86H,要将其字节拆分,高四位存于R3,低四位存于R4,接着进行字节的合并,将合并后的结果存于R2中,源代码如下:ORG0000HLJMPSTARTORG0100HSTART:MOV20H,#79H;20H单元赋初值MOVA,20H;20H单元的内容赋给AANLA,#0FH;高四位清零MOVR4,A;低四位存于R4MOVA,20H;20H单元内容赋给AANLA,#0F0H;低四位清零SWAPA;低四位移至高四位MOVR3,A;结果存于R3,字节拆分结束SWAPA;移回低四位ADDA,R4;A中的内容与R4的内容相加MOVR2,A;结果存于R2中,字节合并完成HERE:SJMPHEREEND若按递减1规律填充数据块,应如何修改程序?答:程序如下:ORG0000HLJMPSTARTORG0100HSTART:MOVA,#00H;将立即数OFFH存入累加器AMOVR0,#0FFH;RO指向MOVDPTR,#7000H;DPTR指向7000HFILL:MOVX@DPTR,A;传递到片外INCA;A加一INCDPTRDECR0;修改循环计数器RO减一DJNZR0,FILL;是否结束HERE:SJMPHERE;原地踏步END若从7010H单元开始,连续填充20个字节,应该如何修改程序?答:程序如下:ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#40HSTART:MOVA,#00HMOVR0,#0AH MOVDPTR,#7020HFILL:MOVX@DPTR,AINCA INCDPTR DECR0 DJNZR0,FILLHERE:SJMPHEREEND5.若完成双字节BCD码加法,应如何修改程序?不妨设第一个BCD码存于20H,21H;第二个存于30H,31H程序代码:ORG000HLJMPSTARTORG0100HSTART:MOVA,20H;将加数低8位存入A ADDA,30H;两者低8位相加,和存于ADAA;二-十进制

温馨提示

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

评论

0/150

提交评论