;将两个多位十进制数相加,要求被加数,加数通过键盘输入后按顺序存放在以ADD1和ADD2为首的六个内存单元中(低位在前),结果送入SUM为首的六个内存单元中。假定计算的结果也是六位,否则算溢出,可不处理。
DATA SEGMENT
ADD1 DD ?
ADD2 DD ?
SUM DD 'INPUT 2 DECIMAL NUMBER(ADD1+ADD2):',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK
STT DW 50 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,STACK
MOV SS,AX
LEA SP,TOP
MOV AX,DATA
MOV DS,AX ;初始化
LEA SI,ADD1
LEA DI,ADD2
LEA BX,SUM
LEA DX,SUM
MOV AH,09H ;输入SUM
INT 21H
CLC
MOV CX,6 ;计数器
CALL SHURU1 ;输入ADD1
CALL SHURU2 ;输入ADD2
SUB SI,5 ;地址归位到初始
SUB DI,5
MAIN:CALL JIAFA ;调用加法运算
DEC CX
JNZ MAIN
MOV AH,21H
INT 21H
;//////////////////
SHURU1 PROC NEAR ;ADD1的输入
MOV AX,6
ABC: MOV AH,1
INT 21H
MOV [SI],AL
INC SI
DEC AX
JNZ ABC
RET
SHURU1 ENDP
;/////////////////////////
SHURU2 PROC NEAR ;ADD2的输入
MOV AX,6
ABD: MOV AH,1
INT 21H
MOV [DI],AL
INC DI
DEC AX
JNZ ABD
RET
SHURU2 ENDP
;////////////////
JIAFA PROC NEAR ;加法运算
MOV AL,[SI]
ADC AL,[DI]
DAA
MOV [BX],AL
INC SI
INC DI
INC BX
RET
JIAFA ENDP
;//////////////
CODE ENDS
END START
;将两个多位十进制数相加,要求被加数,加数通过键盘输入后按顺序存放在以ADD1和ADD2为首的六个内存单元中(低位在前),结果送入SUM为首的六个内存单元中。假定计算的结果也是六位,否则算溢出,可不处理。
DATA SEGMENT
ADD1 DD ?
ADD2 DD ?
SUM DD 'INPUT 2 DECIMAL NUMBER(ADD1+ADD2):',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK
STT DW 50 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,STACK
MOV SS,AX
LEA SP,TOP
MOV AX,DATA
MOV DS,AX ;初始化
LEA SI,ADD1
LEA DI,ADD2
LEA BX,SUM
LEA DX,SUM
MOV AH,09H ;输入SUM
INT 21H
CLC
MOV CX,6 ;计数器
CALL SHURU1 ;输入ADD1
CALL SHURU2 ;输入ADD2
SUB SI,5 ;地址归位到初始
SUB DI,5
MAIN:CALL JIAFA ;调用加法运算
DEC CX
JNZ MAIN
MOV AH,21H
INT 21H
;//////////////////
SHURU1 PROC NEAR ;ADD1的输入
MOV AX,6
ABC: MOV AH,1
INT 21H
MOV [SI],AL
INC SI
DEC AX
JNZ ABC
RET
SHURU1 ENDP
;/////////////////////////
SHURU2 PROC NEAR ;ADD2的输入
MOV AX,6
ABD: MOV AH,1
INT 21H
MOV [DI],AL
INC DI
DEC AX
JNZ ABD
RET
SHURU2 ENDP
;////////////////
JIAFA PROC NEAR ;加法运算
MOV AL,[SI]
ADC AL,[DI]
DAA
MOV [BX],AL
INC SI
INC DI
INC BX
RET
JIAFA ENDP
;//////////////
CODE ENDS
END START