CODE SEGMENT
ASSUME CS:CODE
SUM DW 0
START: PUSH CS
POP DS
PUSH CS
POP ES
CALL INPUTNUM
CALL LFCR
LEA SI,ARRAY
MOV CX,NUM
CLD
@0:
LODSW
ADD SUM,AX
LOOP @0
MOV AX,SUM
CALL DSPAX
MOV AH,4CH
INT 21H
;=========================================
LFCR PROC NEAR
PUSH AX
PUSH DX
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
POP DX
POP AX
RET
LFCR ENDP
;===============================================
; 键盘输入数值数组子程序(数组名为array,元素个数存放在num中)
INPUTNUM PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
PUSHF
; 输入的数据以一个空格分隔,以回车符结束输入
LEA DI,CS:ARRAY
MOV WORD PTR CS:NUM,0
STIN:
MOV AX,0
PUSH AX
AGAIN1:
MOV AH,0CH
MOV AL,1
INT 21H
MOV BYTE PTR CS:CHAR,AL
CMP AL,13
JE LINE0
CMP AL,' '
JE LINE0
SUB AL,30H
MOV AH,0
MOV SI,AX
POP AX
MOV CL,10
MOV CH,0
MUL CX
ADD AX,SI
PUSH AX
JMP AGAIN1
LINE0:
POP AX
MOV WORD PTR CS:[DI],AX
INC WORD PTR CS:NUM
CMP BYTE PTR CS:CHAR,13
JE STINEND
INC DI
INC DI
JMP STIN
STINEND:
POPF
POP BP
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
RET
ARRAY DW 200 DUP(0)
NUM DW 0
CHAR DB ?
INPUTNUM ENDP
;======================================
DSPAXS PROC NEAR
PUSH AX
TEST AX,8000H
JNS @DSPAXS1
PUSH AX
PUSH DX
MOV AH,2
MOV DL,'-'
INT 21H
POP DX
POP AX
NEG AX
@DSPAXS1:
CALL DSPAX
POP AX
RET
DSPAXS ENDP
;==================================
DSPAX PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSHF
XOR CX,CX
MOV BX,10
@DSPAX1:
XOR DX,DX
DIV BX
INC CX
OR DX,30H
PUSH DX
CMP AX,0
JNE @DSPAX1
MOV AH,2
@DISPAX2:
POP DX
INT 21H
LOOP @DISPAX2
MOV DL,32
INT 21H
POPF
POP DX
POP CX
POP BX
POP AX
RET
DSPAX ENDP
;==================================
CODE ENDS
END START
温馨提示:答案为网友推荐,仅供参考