帮忙看看下面这段汇编代码

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:06:53
程序介绍:在运行这段代码的时候,提示Input a number,要求输入一个两位ASCII数字,在输入之后会对这两位数字进行判断,看是否是ASCII码中的数字,如果不是,则给予error的错误提示并要求重新输入
问题: 如果输入的是错误的ASCII码,没有问题,程序会提示重新输入正确的ASCII数字,但是如果输入的是正确的ASCII数字,当我按下回车键的时候,程序却无法继续向下执行,光标始终停留在刚刚输入的字符之后,无论怎样做程序都没有反应
能否帮忙看看为什么程序无法继续执行下去了
.MODEL SMALL
.DATA
INPUTS DB 'Input a number $'
OUTPUTS DB 0DH, 0AH,'The square is $'
ERROR DB 0DH, 0AH,'ERROR$', 0DH, 0AH,'$'
NUM DB 3, 0, 4 DUP(?)
RES DB 5, 0, 5 DUP(?)
.STACK
.CODE
PROC_DN PROC NEAR
MOV DX, OFFSET INPUTS
MOV AH, 09H
INT 21H ;显示Input a number
RETN
PROC_DN ENDP

PROC_INPUT PROC NEAR
MOV DX, OFFSET NUM
MOV AH, 0AH
INT 21H ;输入2位的数字
RETN
PROC_INPUT ENDP

PROC_ERROR PROC NEAR
MOV AH, 09H
MOV DX, OFFSET ERROR
INT 21H ;显示错误ERROR
RET
PROC_ERROR ENDP

P

程序执行“CALL PROC_RES”后,你没有后续指令了,程序就死了。
1、如果想继续输入,就在CALL PROC_RES行后加跳转指令:

jmp PINPUT

1、如果想正常退出,就在CALL PROC_RES行后加退出指令:

mov al,0 ;返回码
mov ah,4ch
int 21h