太原理工大学 微机原理 实验一 多位十进制数相加程序
本科微型计算机原理及应用实验报告
课程名称: 微型计算机原理及应用
实验名称: 多位十进制数相加程序
实验地点: 微机原理实验室
实验一 多位十进制数相加程序
实验目的
学习数据传送和算术运算指令的用法
实验内容
将两个多位十进制数28056、47193相加,并显示加数、被加数、和。要求两个加数均以ASCII码形式各自顺序存放在DATA1和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)
三、程序流程图
N
Y
实验程序
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