微机原理 实验一 加法程序

2019-01-12 18:52

实验一 加法程序

一、实验目的:

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

二、实验内容:

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

三,程序流程图:

程序流程如图2.1所示。

开始 显示被加数和加数 将被加数和加数由ASCII码转化为十六进制 计数值5 CX 清除最低位进位 执行ADC带进位相AAA 调整 结果送被加数存储区 调整偏移量 N CX-1=0? Y 将十六进制的结果转化为ASCII码表示的数字串 显示结果“和” 结束 图2.1十进制数相加程序流程图

四、编写源程序如下:

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

编写完源程序后,保存为文件名为“JIAFA.ASM”的文件。 五、实验结果:

①用“ML”命令对源程序“JIAFA.ASM”进行汇编链接。由于输入代码时粗心,输入有误,编译器提示程序错误在20和21行:

②输入“EDIT JIAFA..ASM”进入编辑界面,查找20和21行,发现输入逗号“,”输入时错写成句号“.”,开始改错:

③纠正后保存,接着汇编链接,程序正确,生成可执行文件“JIAFA.EXE”:

④输入“JIAFA.EXE”执行程序,执行结果如下,符合题目要求:

六、思考题:

变成65082和39174,并且相加。

问:不改变数据段DATE1和DATE2的内容,如何将加数和被加数分别由28056和47193

答:将原程序中的数据相加顺序改变一下,即将原来的倒序相加变为顺序相加,也可将结果变为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

七、实验总结:

本次实验第一次将课本上的程序搬入机器中运行,虽然程序较长且难理解,不过在电脑上可进行“debug”调试,学起来更加得心应手。同时,编译器能提示程序的错误行,这对程序的调试提供很大的帮助。虽然自己目前还达不到自己编写出类似复杂汇编程序的水平,不过本次实验激发了我的学习热情,在接下来的学习过程中,我将更加重视上机实验这个环节,毕竟在自己笔记本上也可以做这些类似实验。

实验过程中注意保持细心、耐心,因为正确输入源程序将为接下来的工作提供很大便利,如果在输入程序时粗心大意,造成较多错误,将严重拖慢接下来的实验进度。


微机原理 实验一 加法程序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:变压器油中溶解气体的监测与诊2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: