为什么 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 的示例可能会对您有所帮助,请参阅
有人知道为什么 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 的示例可能会对您有所帮助,请参阅