ASSUME CS: C, DS: D
;--------------------------------
D SEGMENT
MSG1 DB 10, 13, 'Please input a num: $'
MSG2 DB 10, 13, 'Zheng Sum = $'
MSG3 DB 10, 13, ' FU Num = $'
FU DB 0
ZH DB 0
D ENDS
;--------------------------------
C SEGMENT ;代碼段
START:
MOV AX, D
MOV DS, AX
;--------------------------------
MOV CX, 10
IN_X:
LEA DX, MSG1
MOV AH, 9 ;顯示字符串
INT 21H
MOV AH, 7 ;輸入單個字符
INT 21H
CMP AL, '-'
JE IN_F ;負數
CMP AL, '0'
JB IN_X ;小於'0',不是數字
CMP AL, '9'
JA IN_X
MOV DL, AL
MOV AH, 2 ;顯示
INT 21H
MOV AL, DL
SUB AL, '0' ;還原為數字
ADD ZH, AL ;求和
JMP IN_E
;--------------------------------
IN_F:
MOV DL, AL
MOV AH, 2 ;顯示
INT 21H
MOV AH, 7 ;輸入單個字符.
INT 21H
CMP AL, '0'
JB IN_X ;小於'0',不是數字.
CMP AL, '9'
JA IN_X
MOV DL, AL
MOV AH, 2 ;顯示
INT 21H
INC BYTE PTR FU ;個數加壹
IN_E:
LOOP IN_X
;--------------------------------
LEA DX, MSG2
MOV AH, 9 ;顯示字符串
INT 21H
MOV AL, ZH
MOV AH, 0
CALL DISP
LEA DX, MSG3
MOV AH, 9 ;顯示字符串
INT 21H
MOV AL, FU
MOV AH, 0
CALL DISP
MOV AH, 4CH ;到此結束
INT 21H
;--------------------------------
DISP:
MOV BX, 10
MOV CX, 0
D_1:MOV DX, 0
DIV BX
ADD DL, '0'
PUSH DX
INC CX
CMP AX, 0
JNE D_1
MOV AH, 2
D_2:POP DX
INT 21H
LOOP D_2
RET
;--------------------------------
C ENDS
END START
;================================
程序執行後,顯示如下:
c:\masm510>M2
Please input a num: 2
Please input a num: 5
Please input a num: -5
Please input a num: -8
Please input a num: 6
Please input a num: 9
Please input a num: 4
Please input a num: 6
Please input a num: 0
Please input a num: 2
Zheng Sum = 34
FU Num = 2
;================================