为什么 RightKey 不会退出而其他键会退出? Tasm Turbo 汇编器

Why the RightKey aren't Going To exit and the other keys are Going? Tasm Turbo Assembler

有人知道为什么 RightKeyUp 不会退出而其他键会退出?
它在 Tasm Turbo 汇编程序中

当我清除缓冲区时 (mov啊,0ch mov al,07h 整数 21h)

出于某种原因,我没有获得密钥发布

例如此代码(RightUp 从未被接受):

  IDEAL
    MODEL large
    STACK 256
RightUP          equ 11001101b
RightDown        equ 77
LeftDown         equ 75
EscKey           equ 1
    DATASEG
    CODESEG   
    Start:

    mov ax, @data
    mov ds, ax

    mov ax, 0013h
    int 10h

    lop:
    mov ah,0ch
    mov al,07h
    int 21h 

    in ax,060h
    ;push ax   

    cmp al,RightUP
    je lbl1

    cmp al,RightDown
    je lbl2

    cmp al,EscKey
    je lbl1
    cmp al,LeftDown
    je lbl1

    jmp lop

    lbl1:
    jmp exit

    lbl2:
    jmp lop

    Exit:
    mov ah,00h
    mov al,03h
    int 10h
    mov ax,04c00h
    int 21h

    End Start

我检查了更多选项,我明白这两个命令(mov ah,0,int 16h)做同样的事情 但是也拿不到释放钥匙 我真的需要帮助:)

更多更具体的代码:

    IDEAL

MODEL large

STACK 256

    RightUP          equ 11001101b
    RightDown        equ 77
    EscKey           equ 1

DATASEG

    CanClick db 1

CODESEG   

Start:

        mov ax, @data
        mov ds, ax

        mov ah,00h
        mov al,03h
        int 10h

lbl1:
    mov [CanClick],1
lop:
        ;mov ah,0ch
        ;mov al,07h
        ;int 21h    
        ;in al,060h
        mov ah,0
        int 16h

        cmp ah,RightDown
        je lbl2

        cmp ah,RightUP
        je lbl1

        cmp ah,EscKey
        je lbl1
jmp lop

lbl2:
    cmp [CanClick],1
    jne lop

    mov ah,0eh
    mov al,97
    mov BH,0
    mov BL,0
    int 10h
    mov [CanClick],0
jmp lop

Exit:
        mov ax,04c00h
        int 21h

End Start
mov ah,0ch
mov al,07h
int 21h 
in ax,060h

使用上面的代码,当你按下时,DOS首先return在AL寄存器中输入一个零,并期望你发出另一个函数调用07h 以接收实际扫描码,该扫描码将是 4Dh 或十进制的 77。您使用读取端口 60h 可以被认为是第二次调用,但它永远不会 return 任何键盘释放代码,如您似乎期望的 11001101b。

 mov ah,0
 int 16h

第二个程序中的 BIOS.WaitKeystroke 函数也永远不会 return 键盘释放代码。

有关使用端口 60h 的示例可能会对您有所帮助,请参阅