微机实验:两个多位十进制数相加.doc
《微机实验:两个多位十进制数相加.doc》由会员分享,可在线阅读,更多相关《微机实验:两个多位十进制数相加.doc(3页珍藏版)》请在冰豆网上搜索。
;两个多位十进制数相加
CRLF MACRO
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
ENDM
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H
DATA2 DB 36H,35H,30H,38H,32H
DATA ENDS
STACK SEGMENT STACK
STA DB 20DUP(?
)
TOP EQU LENGTHSTA
TOP EQU 20
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 SP,TOP
MOV SI,OFFSETDATA2
MOV BX,05
CALL DISPL
CRLF
MOV SI,OFFSETDATA1
MOV BX,05
CALL DISPL
CRLF
MOV DI,OFFSETDATA2
CALL ADDA
MOV SI,OFFSETDATA1
MOV BX,05
CALL DISPL
CRLF
MOV AX,4C00H
INT 21H
DISPL PROC NEAR
DS1:
MOV AH,02
MOV DL,[SI+BX-1]
INT 21H
DEC BX
JNZ DS1
RET
DISPL ENDP
ADDA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05
AD1:
SUB BYTEPTR[SI+BX-1],30H
SUB BYTEPTR[DI+BX-1],30H
DEC BX
JNZ AD1
MOV SI,DX
MOV DI,BP
MOV CX,05
CLC
AD2:
MOV AL,[SI]
MOVBL,[DI]
ADC AL,[DI]
AAA
MOV [SI],AL
INC SI
INC DI
LOOP AD2
MOV SI,DX
MOV DI,BP
MOV BX,05
AD3:
ADD BYTEPTR[SI+BX-1],30H
ADD BYTEPTR[DI+BX-1],30H
DEC BX
JNZ AD3
RET
ADDA ENDP
CODE ENDS
END START