改进如下:
数据段定义部分,增加2个定义:
prompt byte "input a number:",'$'   ;提示输入语句
bz byte ?     ;标志变量,如果输入的是回车,通过这个标志变量可以直接跳出输入循环
输入循环INP,循环体内容改为:
INP:inc si
     inc si
     lea dx,prompt   ;提示输入一个数
     mov ah,9
     int 21h
     call inputnum
     mov dl,0dh
     mov ah,2
     int 21h
     mov dl,0ah
     int 21h
     cmp bz,0dh     ;判断标志变量是不是回车,如果是,跳出循环。不是,继续循环
     loopnz INP  
输入函数inputnum,改为:
inputnum proc     ;输入一个数的函数,以空格结束
     push ax
     push bx
     push dx
     push cx
 AGN1:mov ah,1
     int 21h
     cmp al,' '
     jz RET1
     cmp al,30h    ;如果数小于0,退出此次输入,回车符是0dh,小于30h
     jb RET1
     cmp al,39h    ;如果数大于9,退出此次输入
     ja RET1
     sub al,30h
     mov ah,0
     xchg bx,ax
     mov cl,10
     mul cl
     xchg bx,ax
     add bx,ax
     jmp AGN1
 RET1:mov array[si],bx
     mov bz,al
     pop cx
     pop dx
     pop bx
     pop ax
     ret
     inputnum endp
如果输入的数不是0-9,会提示你输入下一个数。每输入一个数请按空格结束,如果输入的是回车,直接跳出循环!

 
											





