微机实验报告一.doc_第1页
微机实验报告一.doc_第2页
微机实验报告一.doc_第3页
微机实验报告一.doc_第4页
微机实验报告一.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

微机实验报告 实验名称 Keil 的使用与汇编语言上机操作 成 绩 1、 任务要求 1.掌握Keil环境的使用 1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。 2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2. 编写多个十六位数的加法程序 有4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高 八位在后。要求:和存于R3(高八位)和R2(低八位),进位位存于R4。2、 设计思路 实验一已给出程序代码,不需要设计,下面阐明实验二,编写多个十六位数的加法程序的设计思路。 十六位数相加,先是低八位相加,低八位相加不用考虑进位,所以,此时用ADD指 令,但因为在每次循环时都有CLR C操作,所以也可以用ADDC指令。而且题目中要求将 和的低八位存于R2,所以将每次低八位相加的和存于R2,然后从R2中取值求和。 低八位相加后高八位相加,因为必须处理低位相加的进位问题,所以必须用ADDC指 令。而且因为要求高位和存于R3,所以将每次计算的和存于R3,每次从R3中取数跟新 的高八位相加。 另外考虑到高位进位的问题,所以必须安排一个地址单元或者寄存器存放最高位,也 正是因为每次循环中,进位都会被处理,所以每次循环开始要CLR C。 3、 资源分配 4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高 八位在后。 和存于R3(高八位)和R2(低八位),进位位存于R4。 R0和R1作为数据指针,存放低八位和高八位的地址。 循环次数存于R5。4、 流程图 5、 源代码 (含文件头说明、语句行注释)四个十六位数的加法程序: File name: 3.asm Description: 四个十六位数的加法程序 Date: 2016/09/23 Designed by: 陈钰 Source used: R0,R1 数据指针 R2,R3,R4,R5 寄存器 20H-27H ORG0000HLJMP MAINORG 0100HMAIN:MOV R0,#20HMOV R1,#21H ;设数据指针MOV R2,20HMOV R3,21H ;R2(20H),R3(21H)MOV R4,#00H ;最高位进位清零MOV R5,#03H ;设置循环次数LOOP:CLR C ;进位清零 MOV A,R2 ;AR2INC R0 INC R0 ;R0R0+1+1,R0指向下一个低八位ADD A,R0 ;AA+(R0),低八位相加MOV R2,A ;R2A,低八位的和存于R2MOV A,R3 ;AR3INC R1INC R1 ;R1R1+1+1,R1指向下一个高八位ADDC A,R1 ;AA+(R1)+C,高八位加进位的和MOV R3,A ;R3A,高八位的和存于R3CLR A ;A寄存器清零ADDC A,R4 ;AA+R4+C,计算进位MOV R4,A ;R4A,进位信息存入R4DJNZ R5,LOOP ;判断R5是否等于零判断循环是否结束HERE: SJMP HERE END 6、 程序测试方法与结果字节拆分、合并程序:(存于30H的数被拆分,分别转为ASCII码存于31H和32H,最 后再合并存于33H)数据块填充程序(将片外RAM 7000H-70FFH单元按一定规律填充) 四个十六位数的加法程序 输入的数: 结果: 思考题1 怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用? 1) 观察工作寄存器,SFR: 点击 ViewRegisters Window,弹开“Registers”窗口。 在此窗口查看。 2) 观察IO 端口,Timer,中断控制寄存器:点击菜单 Peripherals,弹出外设选项栏, 选择对应外设,弹出相应外设控制寄存器窗口,即可观察。 3) 观察片内 RAM,代码区和片外数据区:点击菜单 View选择 Memory Windows, 在 Address 栏中键入存储空间类型和地址,可以观察到相应内容。 Disassembly窗口显示代码及其相应的机器码,也展示了代码的PC地址。2 字节拆分、合并还有哪些方法,举一例说明。 举例: ORG 0100HMAIN: MOV SP, #40H ;赋堆栈指针 MOV 30H, #49H ;30H单元赋值 MOV A, 30H ANL A,#0FH ;拆分出低四位 ORL 32H, #30H ;转换为ASCII MOV A,30H ANL A,#0F0H SWAP A ;拆分出高四位 ORL A, #30H ;转换为ASCII MOV 31H, A ;结果存于31H单元 HERE: SJMP HERE ;踏步 END 3 若按递减1规律填充数据块,应如何修改程序? 将“INC A”改为“DEC A” 改后运行结果如下:4 若从7010H单元开始,连续填充20个字节,应该如何修改程序? ORG 0000HLJMP MAIN ORG 0100HMAIN:MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #20 ;设循环计数器 MOV DPTR, #7010H ;设数据指针FILL1: MOVX DPTR, A ;传送到片外RAM DEC A ;A内容加1INC DPTR ;修改数据指针 DJNZ R0, FILL1 ;判断是否结束 HERE: SJMP HERE ;原地踏步 END 运行结果: 5 若完成双字节BCD码加法,应如何修改程序? 在“ADD A,R0”和代码“ADDC A,R1 ”下各加一条代码“DA A”。 输入数据: 运行结果: 9393+9498+9999+9993=38883正确

温馨提示

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

评论

0/150

提交评论