微机实验报告一.docx
- 文档编号:11167080
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:9
- 大小:197.11KB
微机实验报告一.docx
《微机实验报告一.docx》由会员分享,可在线阅读,更多相关《微机实验报告一.docx(9页珍藏版)》请在冰豆网上搜索。
微机实验报告一
实验名称Keil的使用与汇编语言上机操作成绩
1、任务要求
1.掌握Keil环境的使用
1)字节拆分、合并:
调试e421.asm程序,观察相关寄存器和单元的内容。
2)数据块填充:
调试fill.asm程序,观察相关寄存器和单元的内容。
2.编写多个十六位数的加法程序
有4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高
八位在后。
要求:
和存于R3(高八位)和R2(低八位),进位位存于R4。
2、设计思路
实验一已给出程序代码,不需要设计,下面阐明实验二,编写多个十六位数的加法程
序的设计思路。
十六位数相加,先是低八位相加,低八位相加不用考虑进位,所以,此时用ADD指
令,但因为在每次循环时都有CLRC操作,所以也可以用ADDC指令。
而且题目中要求将
和的低八位存于R2,所以将每次低八位相加的和存于R2,然后从R2中取值求和。
低八位相加后高八位相加,因为必须处理低位相加的进位问题,所以必须用ADDC指
令。
而且因为要求高位和存于R3,所以将每次计算的和存于R3,每次从R3中取数跟新
的高八位相加。
另外考虑到高位进位的问题,所以必须安排一个地址单元或者寄存器存放最高位,也
正是因为每次循环中,进位都会被处理,所以每次循环开始要CLRC。
3、资源分配
4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高
八位在后。
和存于R3(高八位)和R2(低八位),进位位存于R4。
R0和R1作为数据指针,存放低八位和高八位的地址。
循环次数存于R5。
4、流程图
5、源代码(含文件头说明、语句行注释)
四个十六位数的加法程序:
Filename:
3.asm
Description:
四个十六位数的加法程序
Date:
2016/09/23
Designedby:
陈钰
Sourceused:
R0,R1数据指针
R2,R3,R4,R5寄存器
20H-27H
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#20H
MOVR1,#21H;设数据指针
MOVR2,20H
MOVR3,21H;R2←(20H),R3←(21H)
MOVR4,#00H;最高位进位清零
MOVR5,#03H;设置循环次数
LOOP:
CLRC;进位清零
MOVA,R2;A←R2
INCR0
INCR0;R0←R0+1+1,R0指向下一个低八位
ADDA,@R0;A←A+(R0),低八位相加
MOVR2,A;R2←A,低八位的和存于R2
MOVA,R3;A←R3
INCR1
INCR1;R1←R1+1+1,R1指向下一个高八位
ADDCA,@R1;A←A+(R1)+C,高八位加进位的和
MOVR3,A;R3←A,高八位的和存于R3
CLRA;A寄存器清零
ADDCA,R4;A←A+R4+C,计算进位
MOVR4,A;R4←A,进位信息存入R4
DJNZR5,LOOP;判断R5是否等于零判断循环是否结束
HERE:
SJMPHERE
END
6、程序测试方法与结果
字节拆分、合并程序:
(存于30H的数被拆分,分别转为ASCII码存于31H和32H,最
后再合并存于33H)
数据块填充程序(将片外RAM7000H-70FFH单元按一定规律填充)
四个十六位数的加法程序
输入的数:
结果:
思考题
1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?
Disassembly窗口有何作用?
1)观察工作寄存器,SFR:
点击ViewRegistersWindow,弹开“Registers”窗口。
在此窗口查看。
2)观察IO端口,Timer,中断控制寄存器:
点击菜单Peripherals,弹出外设选项栏,
选择对应外设,弹出相应外设控制寄存器窗口,即可观察。
3)观察片内RAM,代码区和片外数据区:
点击菜单View选择MemoryWindows,
在Address栏中键入存储空间类型和地址,可以观察到相应内容。
Disassembly窗口显示代码及其相应的机器码,也展示了代码的PC地址。
2.字节拆分、合并还有哪些方法,举一例说明。
举例:
ORG0100H
MAIN:
MOVSP,#40H;赋堆栈指针
MOV30H,#49H;30H单元赋值
MOVA,30H
ANLA,#0FH;拆分出低四位
ORL32H,#30H;转换为ASCII
MOVA,30H
ANLA,#0F0H
SWAPA;拆分出高四位
ORLA,#30H;转换为ASCII
MOV31H,A;结果存于31H单元
HERE:
SJMPHERE;踏步
END
3.若按递减1规律填充数据块,应如何修改程序?
将“INCA”改为“DECA”
改后运行结果如下:
4.若从7010H单元开始,连续填充20个字节,应该如何修改程序?
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#40H
FILL:
CLRA;A寄存器清零
MOVR0,#20;设循环计数器
MOVDPTR,#7010H;设数据指针
FILL1:
MOVX@DPTR,A;传送到片外RAM
DECA;A内容加1
INCDPTR;修改数据指针
DJNZR0,FILL1;判断是否结束
HERE:
SJMPHERE;原地踏步
END
运行结果:
5.若完成双字节BCD码加法,应如何修改程序?
在“ADDA,@R0”和代码“ADDCA,@R1”下各加一条代码“DAA”。
输入数据:
运行结果:
9393+9498+9999+9993=38883正确
本人承诺:
本报告内容真实,无伪造数据,无抄袭他人成果。
本人完全了解学校相关规定,如若违反,愿意承担其后果。
其它说明:
1.标题:
黑体,小四号
2.正文:
宋体,五号,1.5倍行距
3.流程图使用SmartDraw7或Visio软件绘制
4.不要加封面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)