汇编响铃问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:51:30
DATA SEGMENT
STRING DB 'Input error!','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,1
INT 21H

MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H

CMP AL,31H
JL ERROR
CMP AL,39H
JG ERROR
SUB AL,30H
MOV CH,0
MOV CL,AL

BELL: MOV DL,07H
MOV AH,2
INT 21H
LOOP BELL
JMP EXIT

ERROR: LEA DX,STRING<

DATA SEGMENT
STRING DB 'Input error!','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,1
INT 21H
push ax /*这个地方要注意保护AX,因为你下面的回车换行使用了AH,虽然输入的内容存在AL中,但编译运行时候某些位可能产生变化导致运行不准

MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H

pop ax
CMP AL,31H
JL ERROR
CMP AL,39H
JG ERROR
SUB AL,30H
MOV CH,0
MOV CL,AL

BELL: MOV DL,07H /*这里你需要加上延时程序才能准确听到你的响铃次数,负责只能听到一次
MOV AH,2
INT 21H
LOOP BELL
JMP EXIT

ERROR: LEA DX,STRING
MOV AH,9
INT 21H

EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START

下面这个是帮你加了个延时程序,可以听到准确的响铃了
DATA SEGMENT
STRING DB 'Input error!','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,1 <