1 / 8
文档名称:

微机实验报告一.doc

格式:doc   大小:322KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

微机实验报告一.doc

上传人:花花世界 2018/10/31 文件大小:322 KB

下载得到文件列表

微机实验报告一.doc

文档介绍

文档介绍:实验名称 Keil 的使用与汇编语言上机操作成绩
任务要求

1)字节拆分、合并:, 观察相关寄存器和单元的内容。
2)数据块填充:,观察相关寄存器和单元的内容。
2. 编写多个十六位数的加法程序
有4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高
八位在后。要求:和存于R3(高八位)和R2(低八位),进位位存于R4。
设计思路
实验一已给出程序代码,不需要设计,下面阐明实验二,编写多个十六位数的加法程
序的设计思路。
十六位数相加,先是低八位相加,低八位相加不用考虑进位,所以,此时用ADD指
令,但因为在每次循环时都有CLR C操作,所以也可以用ADDC指令。而且题目中要求将
和的低八位存于R2,所以将每次低八位相加的和存于R2,然后从R2中取值求和。
低八位相加后高八位相加,因为必须处理低位相加的进位问题,所以必须用ADDC指
令。而且因为要求高位和存于R3,所以将每次计算的和存于R3,每次从R3中取数跟新
的高八位相加。
另外考虑到高位进位的问题,所以必须安排一个地址单元或者寄存器存放最高位,也
正是因为每次循环中,进位都会被处理,所以每次循环开始要CLR C。

资源分配
4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高
八位在后。
和存于R3(高八位)和R2(低八位),进位位存于R4。
R0和R1作为数据指针,存放低八位和高八位的地址。
循环次数存于R5。
流程图
源代码(含文件头说明、语句行注释)
四个十六位数的加法程序:
File name:
Description: 四个十六位数的加法程序
Date: 2016/09/23
Designed by: 陈钰
Source used: R0,R1 数据指针
R2,R3,R4,R5 寄存器
20H-27H

ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0,#20H
MOV R1,#21H ;设数据指针
MOV R2,20H
MOV R3,21H ;R2←(20H),R3←(21H)
MOV R4,#00H ;最高位进位清零
MOV R5,#03H ;设置循环次数
LOOP: CLR C ;进位清零
MOV A,R2 ;A←R2
INC R0
INC R0 ;R0←R0+1+1,R0指向下一个低八位
ADD A,***@R0 ;A←A+(R0),低八位相加
MOV R2,A ;R2←A,低八位的和存于R2
MOV A,R3 ;A←R3
INC R1
INC R1 ;R1←R1+1+1,R1指向下一个高八位
ADDC A,***@R1 ;A←A+(R1)+C,高八位加进位的和
MOV R3,A ;R3←A,高八位的和存于R3

CLR A ;A寄存器清零
ADDC A,R4 ;A←A+R4+C,计算进位
MOV R4,A ;R4←A,进位信息存入R4
DJNZ R5,LOOP ;判断R5是否等于零判断循环是否结束

HERE