两个多位十进制数相加的实验

更新时间:2023-09-30 00:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学生实验报告

( 2010 —2011 学年第 2 学期 )

课程名称:微机原理与接口技术 开课实验室:205教室 2011年5 月10日 年级、专业、班 电信091 学号 20091602姓名 XXX 成绩 2XXX 实验项目名称 两个多位十进制数相加的实验 指导教师 教 师 评 语 教师签名: 年 月 日

一. 实验目的

1. 学习数据传送和算术运算指令的用法。

2..熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。

二、实验原理及基本技术路线图或实验内容(方框原理图或程序流程图)

1、实验内容

将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

显示被加数和加数 被加数和加数以ASCII码表示的数字串形 式转化为由十六进制表示的数字串形式 计数值5→CX 清除最低位进位 执行ADC带进位相加 AAA调整 结果送被加数区 调整偏移量 N CX-1=0? Y 十六进制的结果转化为ASCII码表示的数字串 显示结果 结束 三、所用仪器、材料和软件(设备和软件名称、型号、规格等) 所用的软件为Masm for windows集成实验环境2009 四、实验方法、步骤

1、编写程序代码

2、运行程序,修改错误代码 3、再次运行代码直至运行出正确结果

五、源码程序编制及分析注释

CRLF MACRO ; 宏定义指令(回车执行程序) MOV DL,0DH ; 回车

MOV AH,02H ; 2号调用,显示回车 INT 21H

MOV DL,0AH ;换行

MOV AH,02H ;2号调用换行 INT 21H

ENDM DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H 47193

DATA2 DB 28056

DATA ENDS STACK SEGMENT STA DB 20 DUP(?) 作为堆栈使用

TOP EQU LENGTH STA STACK ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA

MOV DS,AX MOV AX,STACK

MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA2 MOV BX,05 ;宏指令定义结束 ;数据段定义

;第一个数据(作为加数)36H,35H,30H,38H,32H ;第二个数据(作为被加数);数据段定义结束 ;堆栈段定义

;定义从STA开始20个单元;TOP等于堆栈单元数 ;代码段定义 ;设置数据段 ;设置堆栈段 ;DATA2的偏移地址送SI ; 计数次数为5次

CALL DISPL ;调用多次显示子程序DISPL(显示28056)

CRLF ;回车换行

MOV SI,OFFSET DATA1 ;DATA1的偏移地址送SI MOV BX,05 ;计数次数为5次 CALL DISPL ;调用多次显示子程序DISPL(显示47193)

CRLF MOV DI,OFFSET DATA2

CALL ADDA MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL CRLF MOV AX,4C00H INT 21H

DISPL PROC NEAR DS1: MOV AH,02 MOV DL,[SI+BX-1] INT 21H DEC BX JNZ DS1 行指令

RET DISPL ENDP ADDA PROC NEAR 性为NEAR

MOV DX,SI MOV BP,DI

;回车换行 ;使用加法运算程序 ; 将和显示在屏幕上 ;显示结束

;调用多次显示子程序DISPL ;执行回车换行程序 ;返回系统提示符 ;多次显示子程序 ;显示功能号

;显示字符串中一字符 ; DOS的中断调用 ;BX减1,修改偏移量 ;如果BX未减到零跳到DSL执;返回

;完成显示功能子程序定义 ;实行加法运算子程序定义、属 MOV BX,05 ;转换5次 AD1: SUB BYTE PTR [SI+BX-1],30H ;把加数的ASCLL转换为16进制

SUB BYTE PTR [DI+BX-1],30H ;把被加数的ASCLL转换为16进制

DEC BX ;修改偏移量 JNZ AD1 MOV SI,DX MOV DI,BP

MOV CX,05 CLC AD2: MOV AL,[SI] MOV BL,[DI]

ADC AL,BL AAA 整

MOV [SI],AL INC SI

INC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05

AD3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H

DEC BX JNZ AD3 RET

ADDA ENDP ;包括进位,共5位 ;清进位 ;进行代进位加法 ;非组合BCD码的加法调;结果送被加数区 ;指向下一位 ;循环 ;十六进制的数字串转化 ;加法程序结束

CODE ENDS ;代码段结束 END START ;整个程序结束

六、实验结果、分析和结论和体会

1.实验结果:

2.心得体会

初学《微机原理》时,感觉摸不着头绪概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口。课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。

七、教师必须按照上述各项内容严格要求,认真批改和评定学生成绩。

本文来源:https://www.bwwdw.com/article/vqdd.html

Top