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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生实验报告

(2010 —学年第学期)

课程名称:微型计算机原理与接口技术开课实验室: 2011年月日

注:报告内容按实验须知中几点要求进行。

一、实验目的

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

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

3、学会PC机得安装

4、认识编程过程

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

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

程序框图

三、所用软件

四、实验步骤

整个程序分为4个部分:显示加数、转换、相加、输出结果。

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

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 36H,35H,30H,38H,32H ;第二个数据(作为被加数)28056

DATA ENDS ;数据段定义结束

STACK SEGMENT ;堆栈段定义

STA DB 20 DUP(?) ;定义从STA开始20个单元作为堆栈使用 TOP EQU LENGTH STA ;TOP等于堆栈单元数

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 ;DATA2的偏移地址送SI

MOV BX,05 ;计数次数为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 ;调用多次显示子程序DISPL

CRLF ;执行回车换行程序

MOV AX,4C00H ;返回系统提示符

INT 21H

DISPL PROC NEAR ;多次显示子程序

DS1: MOV AH,02 ;显示功能号

MOV DL,[SI+BX-1] ;显示字符串中一字符

INT 21H ; DOS的中断调用

DEC BX ; BX减1,修改偏移量

JNZ DS1 ;如果BX未减到零跳到DSL执行指令

RET ;返回

DISPL ENDP ;完成显示功能子程序定义

ADDA PROC NEAR ;实行加法运算子程序定义、属性为NEAR

MOV DX,SI

MOV BP,DI

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 ;包括进位,共5位

CLC ;清进位

AD2: MOV AL,[SI]

MOV BL,[DI]

ADC AL,BL ;进行代进位加法

AAA ;非组合BCD码的加法调整

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 ;加法程序结束

CODE ENDS ;代码段结束

END START ;整个程序结束

五、实验结果

六、心得体会

通过这次实验让我对这个软件的编程有了更深的了解、知道如何安装这个软件、怎样运行程序。让我学到了很多课本是学不到的东西,有一点意外收获的感觉。

相关文档
最新文档