改进如下:
数据段定义部分,增加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,会提示你输入下一个数。每输入一个数请按空格结束,如果输入的是回车,直接跳出循环!