微机原理实验报告多位十进制数相加程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告
课程名称:微机原理及接口技术
课题项目:多为十进制数相加程序
专业班级:电科1201 学号:2012001610 学生姓名:王天宇
指导教师:任光龙
2015年5月23日
实验一多位十进制数相加程序
一、实验目的
学习数据传送和算术运算指令的用法
二、实验内容
将两个多位十进制数28056、47193相加,并显示加数、被加数、和。
要求两个加数均以ASCII码形式各自顺序存放在DATA1和DATA2内存
单元中,结果送回DATA1处(低位在前,高位在后)
三、程序流程图
开始
显示加数和被加数
加数和被加数由ASCⅡ码表示转化为十六进制
计数值5-->CX
清除最低位进位
执行ADC带进位相加
AAA调整
调整偏移量
显示加数和被加数
N
CX-1=0
Y
将十六进制结果转化为ASCⅡ码表示的数字
显示结果
结束
四、实验程序
SHOW MACRO B
MOV DL,B
MOV AH,02H
INT 21H
ENDM
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H
DATA2 DB 36H,35H,30H,38H,32H
DATA3 DB '__',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK
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
SHOW 20H
CALL DISPL
SHOW 0DH
SHOW 0AH
MOV SI,OFFSET DATA1 MOV BX,05
SHOW 2BH
CALL DISPL
SHOW 0DH
SHOW 0AH
MOV CL,7
S1: SHOW 2DH
LOOP S1
SHOW 0DH
SHOW 0AH
MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 CALL ADDA
MOV SI,OFFSET DATA1 MOV BX,05
SHOW 20H
CALL DISPL
MOV AX,4C00H
INT 21H
DISPL PROC NEAR
DS1: SHOW [SI+BX-1]
DEC BX
JNZ DS1
RET
DISPL ENDP
ADDA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05
AD1: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30H 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
CODE ENDS
END START
五、实验步骤
1、在windows环境下,打开“开始”菜单,选择“运行”项,然后输入”CMD”,按“确定”进去DOS环境。
2、输入“E:”回车,输入“CD MASM”回车。
3、输入“EDIT LR.ASM”回车,进入编辑状态,将以上源程序写入,完成后,如图1,按“Alt+F”打开文件菜单,选“Save”存盘,选“Exit”退出编辑状态。
4、对源程序进行汇编连接:输入“ML LR.ASM”回车,如图2。
5、运行可执行文件.EXE:输入“LR”回车,即可得到程序中给定数据的相加结果,如图2.
图1:程序
图2:汇编连接结果及执行结果
六、思考题:
问:不改变数据段DATA1和DATA2的内容,如何将加数和被加数分别有28056和47193变成65082和39174?
答:将原程序中的数据相加顺序改变一下,即将原来的倒序相加变为顺序相加,也可将结果变为65082和39174。程序具体改动如下:
源程序改变后的程序
DS1:SHOW [SI+BX-1] 改为 DS1: SHOW [SI]
AD2: MOV AL,[SI] 改为 AD2: MOV AL,[SI+BX-1]
MOV BL,[DI] 改为 MOV BL,[DI+BX-1]
INC SI
INC DI 改为 DEC BX
ADD BYTE PRT 改为 ADD BYTE PRT [SI],30H [SI+BX-1],30H 改为 ADD BYTE PRT [DI],30H ADD BYTE PRT 改为 INC SI
[DI+BX-1],30H 改为 INC DI
七、实验感想
通过这次实验,我熟悉了DOS环境,了解了数据传送和算术运算指令的用法,并且对微机原理及接口技术这门课程有了更深的了解和认识。