微机实验报告一.doc

上传人:gs****r 文档编号:1512128 上传时间:2019-03-04 格式:DOC 页数:8 大小:322.50KB
下载 相关 举报
微机实验报告一.doc_第1页
第1页 / 共8页
微机实验报告一.doc_第2页
第2页 / 共8页
微机实验报告一.doc_第3页
第3页 / 共8页
微机实验报告一.doc_第4页
第4页 / 共8页
微机实验报告一.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、微机实验报告 1实验名称 Keil 的使用与汇编语言上机操作 成 绩 1、任务要求1.掌握 Keil 环境的使用1)字节拆分、合并:调试 e421.asm 程序, 观察相关寄存器和单元的内容。2)数据块填充:调试 fill.asm 程序,观察相关寄存器和单元的内容。2. 编写多个十六位数的加法程序有 4 个十六位无符号数,连续存放在 20H 开始的片上数据区中,低八位先存,高八位在后。要求:和存于 R3(高八位)和 R2(低八位) ,进位位存于 R4。2、设计思路实验一已给出程序代码,不需要设计,下面阐明实验二,编写多个十六位数的加法程序的设计思路。十六位数相加,先是低八位相加,低八位相加不用

2、考虑进位,所以,此时用 ADD 指 令,但因为在每次循环时都有 CLR C 操作,所以也可以用 ADDC 指令。而且题目中要求将 和的低八位存于 R2,所以将每次低八位相加的和存于 R2,然后从 R2 中取值求和。低八位相加后高八位相加,因为必须处理低位相加的进位问题,所以必须用 ADDC指 令。而且因为要求高位和存于 R3,所以将每次计算的和存于 R3,每次从 R3 中取数跟新 的高八位相加。另外考虑到高位进位的问题,所以必须安排一个地址单元或者寄存器存放最高位,也 正是因为每次循环中,进位都会被处理,所以每次循环开始要 CLR C。3、资源分配4 个十六位无符号数,连续存放在 20H 开始

3、的片上数据区中,低八位先存,高八位在后。微机实验报告 2和存于 R3(高八位)和 R2(低八位) ,进位位存于 R4。R0 和 R1 作为数据指针,存放低八位和高八位的地址。循环次数存于 R5。4、流程图 R2A低八位和存于 R2AA+(R0)低八位相加R0R0+1+1R0指向下一个低八位的地址AR2CLR CR5循环次数R2(20H)R3(21H)R400H寄存器赋值 R020HR121H指针赋初值单元初始赋值开始AR3结束R5R5-1R5=0?R4A进位存于R4AR4+A+C计算高位进位 CLR AR3A高八位和存于 R3AA+(R1)+C高八位及低位 进位相加R1R1+1+1R1指向下一

4、个高八位的地址NOYES5、源代码 (含文件头说明、语句行注释)四个十六位数的加法程序:File name: 3.asmDescription: 四个十六位数的加法程序 微机实验报告 3Date: 2016/09/23Designed by: 陈钰Source used: R0,R1 数据指针R2,R3,R4,R5 寄存器20H-27HORG 0000HLJMP MAINORG 0100HMAIN: MOV R0,#20HMOV R1,#21H ;设数据指针MOV R2,20HMOV R3,21H ;R2(20H),R3(21H)MOV R4,#00H ;最高位进位清零MOV R5,#03H

5、;设置循环次数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 寄存器清零微机实验报告 4ADDC A,R4 ;AA+R4+C,计算进位MOV R4,A ;R4A,进位信息存入 R4DJNZ R5,LOOP

6、;判断 R5 是否等于零判断循环是否结束HERE: SJMP HERE END 6、程序测试方法与结果字节拆分、合并程序:(存于 30H 的数被拆分,分别转为 ASCII 码存于 31H 和 32H,最 后再合并存于 33H)数据块填充程序(将片外 RAM 7000H-70FFH 单元按一定规律填充)四个十六位数的加法程序 输入的数:微机实验报告 5结果:思考题1怎样查看工作寄存器、SFR、片内 RAM、片外 RAM 及程序代码空间内容?Disassembly 窗口有何作用?1) 观察工作寄存器,SFR: 点击 ViewRegisters Window,弹开“Registers”窗口。在此窗口

7、查看。2) 观察 IO 端口,Timer,中断控制寄存器:点击菜单 Peripherals,弹出外设选项栏,选择对应外设,弹出相应外设控制寄存器窗口,即可观察。3) 观察片内 RAM,代码区和片外数据区:点击菜单 View 选择 Memory Windows,在 Address 栏中键入存储空间类型和地址,可以观察到相应内容。Disassembly 窗口显示代码及其相应的机器码,也展示了代码的 PC 地址。2字节拆分、合并还有哪些方法,举一例说明。举例: ORG 0100HMAIN: MOV SP, #40H ;赋堆栈指针MOV 30H, #49H ;30H 单元赋值MOV A, 30HANL

8、 A,#0FH ;拆分出低四位ORL 32H, #30H ;转换为 ASCII MOV A,30H微机实验报告 6ANL A,#0F0HSWAP A ;拆分出高四位ORL A, #30H ;转换为 ASCII MOV 31H, A ;结果存于 31H 单元 HERE: SJMP HERE ;踏步END 3若按递减 1 规律填充数据块,应如何修改程序?将“INC A”改为“DEC A”改后运行结果如下:4若从 7010H 单元开始,连续填充 20 个字节,应该如何修改程序?ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#40HFILL: CLR A ;A 寄存器

9、清零MOV R0, #20 ;设循环计数器MOV DPTR, #7010H ;设数据指针FILL1: MOVX DPTR, A ;传送到片外 RAMDEC A ;A 内容加 1微机实验报告 7INC DPTR ;修改数据指针DJNZ R0, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步END 运行结果:5若完成双字节 BCD 码加法,应如何修改程序?在“ADD A,R0”和代码“ADDC A,R1 ”下各加一条代码“DA A” 。输入数据:运行结果:9393+9498+9999+9993=38883 正确本人承诺:本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。微机实验报告 8其它说明:1.标题:黑体,小四号2. 正文:宋体,五号,1.5 倍行距3.流程图使用 SmartDraw7 或 Visio 软件绘制4.不要加封面

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 企业管理资料库 > 生产营运

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。