DATAS SEGMENT
;此处输入数据段代码
BUF DB 'PIEASE INPUT A NUMBER:$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码据段代码
JMP STR
ERR1:CALL ERR
STR:MOV AH,01H
INT 21H
CMP AL,0DH
JE EXIT
CMP AL,20H
JE EXIT
CMP AL,31H
JB ERR1
CMP AL,39H
JA ERR1
XOR CX,CX
AND AL,0FH
MOV CL,AL
LOOP1:CALL DELY
CALL RING
LOOP LOOP1
EXIT:MOV AH,4CH
INT 21H
CLR:PUSH AX
PUSH BX
PUSH DX
MOV AH,2
MOV BH,0
MOV DH,0
MOV DL,0
INT 10H
POP DX
POP BX
POP AX
RET
ERR:CALL CLR
PUSH AX ;错误显示
PUSH DX
LEA DX,BUF
MOV AH,09H
INT 21H
POP DX
POP AX
RET
RING:PUSH AX ;响铃一次
PUSH DX
MOV AH,02H
MOV DL,07H
INT 21H
POP DX
POP AX
RET
DELY:PUSH AX ;延时程序
PUSH BX
PUSH CX
PUSH DX
MOV AH,2CH
INT 21H
MOV BL,DH
INC BL
DELY1: MOV AH,2CH
INT 21H
CMP BL,DH
JNZ DELY1
POP DX
POP CX
POP BX
POP AX
RET
CODES ENDS
END START