1

我已经阅读了有关使计算机发出哔哔声的代码,但我无法让它工作。以下代码要求用户输入数字。数字显示在屏幕上,但如果用户键入非数字字符,它应该会发出哔哔声。当我运行程序并输入一个非数字字符时,它就会崩溃。

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。不知道这是否有任何区别。

4

1 回答 1

1

如果您在此处查看 WriteChar 的源代码,您可以看到它正在调用 Windows API WriteConsole 方法,而不是使用 MSDOS API。我相信您将无法调用 DOS API 方法,因为您在与管理硬件和 I/O 功能的内核不兼容的模式下运行。

You might try adjusting the compatibility mode of your exe to use Windows 95 (right click on EXE, go to Compatibility tab).

于 2011-11-15T03:03:12.497 回答