data SEGMENT
ts DB 'please input:$'
again DB 0ah,0dh,'again?(y/n)$'
data ENDS
code SEGMENT
ASSUME CS:code,DS:data
enter1 PROC ;子程序,实现的功能是回车换行
PUSH AX
PUSH DX
MOV AH,02h
MOV DL,0dh
INT 21h
MOV DL,0ah
INT 21h
POP DX
POP AX
RET
enter1 ENDP
start:
MOV AX,data ;加载数据段
MOV DS,AX
a0003:LEA DX,ts
MOV AH,09h ;调用09号功能显示输出字符串
INT 21h
MOV AH,01h ;调用01号功能接收字符
INT 21h
CMP AL,'1' ;接收的字符与1的ASCll比较,小于则转移
JB a0001
CMP AL,'9' ;接收的字符与9的ASCll比较,大于则转移
JA a0001
SUB AL,30h ;将ASCll码转换为数字
XOR AH,AH ;将AX高八位清零,此时AX中的数字为接收的数字
MOV CX,AX ;将AX的值赋给CX以控制循环
a0002:MOV AH,02 ;响铃程序段
MOV DL,07
INT 21H
LOOP a0002 ;循环指令
a0001:LEA DX,again ;提示是否再次运行本程序
MOV AH,09h
INT 21h
MOV AH,01h ;接收字符
INT 21h
CALL enter1
CMP AL,'y' ;将接收的字符与y比较,相同则转移
JE a0003
CMP AL,'Y' ;将接收的字符与Y比较,相同则转移
JE a0003
MOV AH,4ch
INT 21h
code ENDS
END start
|