+ -
当前位置:首页 → 问答吧 → 请教高手:如何使用8259键盘中断

请教高手:如何使用8259键盘中断

时间:2011-01-05

来源:互联网

我选择的汇编项目是编写一个dos下演奏歌曲程序(看似简单,但是实现起来却......),想要实现的其中两个功能是:
  1. 用户可以在唱歌过程中可以键入 P 暂停唱歌
  2. 暂停后,输出提示信息,让用户键入 Y/N 确定退出

在实现第一个功能的时候,我先是用int 16h 的 01h功能判断是否有键入,无效! 后来想到了直接去读60h端口,不知是不是程序写错了,问题未得到解决。

(我找了很多资料还是么找到确切的解决方法。希望大虾门帮帮忙!谢谢!:)

作者: YURONG520   发布时间: 2011-01-05

应该可以用int 16h的吧,你看:
code segment
  assume cs:code
start:
  mov ah,0
  int 16h
  cmp al,'p'
  jnz exit  
  mov dl,al
  mov ah,2
  int 21h  
 exit:
  mov ax,4c00h
  int 21h
code ends
  end start

作者: leetow2003   发布时间: 2011-01-05

你这样改一下:
mov ah,0
int 16h ;判断有无按键
cmp al,0 ;你自己查一下返回什么值是无按键,我这里先假设0就是无按键je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit  
mov dl,al

作者: shzhfu   发布时间: 2011-01-05

刚没注意把2行合并了(这是在1楼的基础上改的)

mov ah,0
int 16h ;判断有无按键
cmp al,0 ;你自己查一下返回什么值是无按键,我这里先假设0就是无按键
je continuou ;无按键继续
mov ah,1 ;有按键, 则先读入这个键对应的字符(也可以用IN还是其他BIOS中断判断是否按的是功能键等)
int 21h
cmp al,'p' ;这样才能判断按的是否p键
jnz exit  
mov dl,al

作者: shzhfu   发布时间: 2011-01-05

热门下载

更多