📄 tadd.asm
字号:
DATA SEGMENT
NUM1 DB 10
DB 0
DB 10 DUP(0)
NUM2 DB 10
DB 0
DB 10 DUP(0)
SUM DW 5 DUP(0)
COUNT DW 0
EXAM DB 'Please Use As (01+12),(012+123),(0001+9999),(00303+99999)....',0AH,0DH
DB 'The Number1',27H
DB 's Digit Must Equal to Number',27H
DB 's....'
DB '$'
SHOW1 DB 'Input number 1: $'
SHOW2 DB 'Input number 2: $'
SHOW3 DB 'The Result is : $'
DATA ENDS
;------------------------------------
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP( ? )
STACK ENDS
;------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;----------------------------------------
CALL CRLF
LEA DX,OFFSET EXAM
MOV AH,09H
INT 21H
CALL CRLF
CALL CRLF
MOV DX,OFFSET SHOW1
MOV AH,09H
INT 21H
MOV DX,OFFSET NUM1
MOV AH,0AH
INT 21H
CALL CRLF
LEA DX,SHOW2
MOV AH,09H
INT 21H
MOV DX,OFFSET NUM2
MOV AH,0AH
INT 21H
CALL CRLF
LEA SI,NUM1+1
LEA DI,NUM2+1
MOV CL,NUM1+1
AND CX,00FFH
MOV COUNT,CX
ADD SI,CX
MOV CL,NUM2+1
AND CX,00FFH
CMP CX,COUNT
JB FLG1
MOV COUNT,CX
FLG1: ADD DI,CX
MOV AL,[SI]
MOV BL,[DI]
SUB AL,30H
SUB BL,30H
ADD AL,BL
AAA
PUSH DI
PUSHF
MOV DI,OFFSET SUM
ADD DI,COUNT
MOV [DI],AL
POPF
POP DI
DEC SI
DEC DI
MOV CX,COUNT
DEC CX
LP: PUSHF
MOV AL,[SI]
MOV BL,[DI]
SUB AL,30H
SUB BL,30H
POPF
ADC AL,BL
AAA
PUSH DI
MOV DI,OFFSET SUM
PUSHF
ADD DI,CX
POPF
MOV [DI],AL
POP DI
DEC SI
DEC DI
LOOP LP
MOV AH,0
LAHF
AND AH,01H
CMP AH,0
JE SHOW
MOV DI,OFFSET SUM
MOV [DI],AH
SHOW: MOV DX,OFFSET SHOW3
MOV AH,09H
INT 21H
MOV CX,COUNT
INC CX
MOV SI,OFFSET SUM
OUTPUT: MOV DL,[SI]
ADD DL,30H
MOV AH,02H
INT 21H
INC SI
LOOP OUTPUT
CALL CRLF
RET
MAIN ENDP
;-----------------------------------
CRLF PROC NEAR
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
RET
CRLF ENDP
;------------------------------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -