当前位置: 代码迷 >> 汇编语言 >> 汇编小弟我用int 16h的1号功能检测键盘输入,用int 21h的7号功能读取数据,为什么每次读到的好像是上次输入的感觉,代码小弟我贴出来
  详细解决方案

汇编小弟我用int 16h的1号功能检测键盘输入,用int 21h的7号功能读取数据,为什么每次读到的好像是上次输入的感觉,代码小弟我贴出来

热度:163   发布时间:2016-05-02 04:27:09.0
汇编我用int 16h的1号功能检测键盘输入,用int 21h的7号功能读取数据,为什么每次读到的好像是上次输入的感觉,代码我贴出来
NEXT2:
MOV AH,1
INT 16H
JNZ NEXT1
JMP NEXT2
NEXT1:  CALL CONTRO
JMP NEXT2
CONTRO PROC NEAR
MOV AH,7
INT 21H
MOV AH,0
CLC
;CMP AL,0
;JNZ RET
CMP AL,50H
JZ IS_DOWN

CMP AL,48H
JZ IS_UP

CMP AL,4BH
JZ IS_LEFT

CMP AL,4DH
JZ IS_RIGHT

CMP AL,27
JZ IS_ESC
RET
其他东西省略了
------解决思路----------------------
上次输入?那你第一次读取的是什么?
------解决思路----------------------
在我的汇编书中对上下左右键的检测是通过对他们的扫描码来实现的,我看了下书上的关于键盘的键的扫描码和ASCII码,发现上下左右键的ASCII码都是00h,不能够用检测ASCII的方法来实现,只能够用扫描码。
上下左右键的扫描码是48h,50h,4bh,4dh。
------解决思路----------------------
你直接用

mov ah, 10h
int  16h

就应该可以了啊,然后就直接检测AH中的值就能够知道你读入的是那个键,为什么还要用INT 21H呢