我已经阅读了有关使计算机发出哔哔声的代码,但我无法让它工作。以下代码要求用户输入数字。数字显示在屏幕上,但如果用户键入非数字字符,则应发出蜂鸣声。当我运行程序并输入一个非数字字符时,它就会崩溃。
INCLUDE Irvine32.inc
.data
enterDigits BYTE 'Please type some digits: ', 0
.code
main PROC
mov EDX, OFFSET enterDigits
call WriteString
L1:</b>
call ReadChar
cmp AL, 0Dh
je FINISHED
cmp AL, 30h
jl BEEP
cmp AL, 39h
jg BEEP
call WriteChar
loop L1
BEEP:</b>
mov AH, 02h
mov DL, 07h
int 21h
jmp L1
FINISHED:</b>
call CRLF
call CRLF
exit</b>
main ENDP</b>
END main
If I replace BEEP with:
BEEP:</b>
mov AL, 33h
call WriteChar
jmp L1
键入非数字字符时将打印3。不知道这是否有所不同。
答案 0 :(得分:1)
如果查看WriteChar here的源代码,可以看到它正在调用Windows API WriteConsole方法而不是使用MSDOS API。我相信您无法调用DOS API方法,因为您运行的模式与管理硬件和I / O功能的内核不兼容。
您可以尝试调整exe的兼容模式以使用Windows 95(右键单击EXE,转到“兼容性”选项卡)。