实验报告格式要求.doc_第1页
实验报告格式要求.doc_第2页
实验报告格式要求.doc_第3页
实验报告格式要求.doc_第4页
实验报告格式要求.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

实验名称: KeilC的使用与汇编语言上机操作专业班级 光电王大珩1101 姓名:杜双成 学号: U201110354 序号 6 联系方式1、 任务要求 熟悉KeilC环境,通过在KeilC环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。1.掌握KeilC环境的使用 1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。 2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2. 编写两个十六位数的加法程序。有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2.3.编写两BCD码加法程序。2、 设计思路2题,赋值后,利用数据指针DPTR,取两数低位相加,存和于R4,再取两数低位相加,存和于R3,存进位位于R2。3题,本题的关键是在加法后面紧跟着用用指令调整码3、 资源分配 ,两数初值分别存于片内RAM中的20H21H和30H31H,运算结果存于R2(进位位)、R3(高八位)和R4(低八位),工作寄存器R0和R1用作地址指针。,设两位码的高位和地位分别存于单元中,单元中。结果存于单元中。4、 流程图 1、 字节拆分、合并程序 2、 数据块填充程序 3、 两个十六位数的加法程序 ,码加法。开始进位位清零把单元和单元里的内容取出来相加用指令转换码顺次把各个地址单元里的内容相加并用指令调整后,存入指定的地址单元即可。5、 源代码 (含文件头说明、资源使用说明、语句行注释) 1,字节拆分、合并程序 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP, #40H ;赋堆栈指针 MOV 30H, #49H ;30H单元赋值 MOV R0, #32H ;R0指针赋值 MOV R0, #0 ;32H单元清零 MOV A, 30H XCHD A, R0 ;拆分字节 ORL 32H, #30H ;转换为ASCII SWAP A ORL A, #30H ;转换为ASCII MOV 31H, A ;结果存于31H单元 MOV A, 31H ;从31H单元取值 ANL A, #0FH ;转换为BCD SWAP A MOV 33H, A ;结果存于33H单元MOV A, 32H ;从32H单元取值 ANL A, #0FH ;转换为BCD ORL 33H, A ;合并字节 HERE: SJMP HERE ;踏步 END 2、 数据块填充程序 ORG 0000H LJMP MAINORG 0100HMAIN: MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #00H ;设循环计数器 MOV DPTR, #7000H ;设数据指针FILL1: MOVX DPTR, A ;传送到片外RAM INC A ;A内容加1INC DPTR ;修改数据指针 INC R0 ;修改循环计数器 CJNE R0, #00H, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步 END 3、两个十六位数的加法程序 ORG 0000H LJMP MAIN ORG 0100HMAIN: CLR C ;进位清零 MOV 20H,#07H ;赋值 MOV 21H,#16H MOV 30H,#10H MOV 31H,#28H MOV R0,#20H;置数据指针 MOV R1,#30H MOV A,R0 ;取第一个数低位 ADD A,R1 ;两数低位相加 MOV R4,A ;存“和”低位 INC R0 ;修改指针 INC R1 MOV A,R0 ;取第一个数高位 ADDC A,#00H ;处理低位相加进位 ADD A,R1 ;两数高位相加 MOV R3,A ;存“和”高位 CLR A ADDC A,#00H ;处理高位相加进位 MOV R2,A ;最终进位存于R2HERE: SJMP HERE ;踏步 END,码加法;进位位清,:6、 程序测试方法与结果、软件性能分析1、 字节拆分、合并程序字节合并2、 据块填充程序 3、 两个十六位数的加法程序 7、 心得与体会 通过这次试验首先是掌握了软件的基本操作,如何添加一个工程,和如何及时修改编程中出现的问题。同时,通过程序的编译过程认识到各个指令系统的作用,加深了对个个指令的理解和认识。八,课后思考题1,怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?答:工作寄存器与SFR的内容在调试阶段的“Register窗口”查看,外围设备的内容在“Peripherals项目”中查看,也可以通过相对应的固定地址在“Memory 1窗口”中查看。Disassembly 窗口用于设置断点。2,字节拆分、合并还有哪些方法,举一例说明。答:还可以用如下方法进行拆分(合并方法相同):ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP, #40H ;赋堆栈指针 MOV 30H, #49H MOV A, 30H XCHD A, #03H SWAP A ;BCD码高位转换为ASCII码 MOV 31H, A MOV A, 30H XCHD A, #30H ;BCD码低位转换为ASCII码 MOV 32H, A ;拆分结束 3,若按递减1规律填充数据块,应如何修改程序?答:将指令“INC A”改为“DEC A”。4,若从7010H单元开始,连续填充20个字节,应该如何修改程序?答:FILL与FILL1模块改为如下代码:FILL: CLR A MOV R0, #00H MOV DPTR, #70

温馨提示

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

最新文档

评论

0/150

提交评论