微机原理实验一 微机原理实验加法器
时间:2026-01-19
时间:2026-01-19
本科实验报告
课程名称:
实验项目:
实验地点:
专业班级:
学 号:
学生姓名:指导教师:
微机原理及接口技术 加 法 程 序 微机原理实验室 电子信息1001 张 恒 斌 任 光 龙
2013年 06月 05日
一.实验目的
学习并掌握数据传送和算术运算指令的用法。
二.实验内容
将两个多位十进制数28056,47193相加,并在屏幕上显示加数、被加数、和。要求两个操作数均以ASCII码形式各自顺序存放在DATA1和DATA2内存单元中,并将结果送回DATA1处(低位在前,高位在后)。
三.程序流程图
程序流程如图2.1所示。
图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
五、实验结果
六、思考题
不改变数据段DATA1和DATA2的内容如何将加数与被加数分别由28056和47193变成65082和39174并且相加。
答源程序不变将
DATA1 DB 33H,39H,31H,37H,34H DATA2 DB 36H,35H,30H,38H,32H 后加上
DATA4 DB 37H,34H,31H,39H,33H DATA5 DB 32H,38H,30H,35H,36H
并将全部DATA1和DATA2全部改成DATA4和DATA5就可以实现。