请教高手:如何使用8259键盘中断
时间:2011-01-05
来源:互联网
我选择的汇编项目是编写一个dos下演奏歌曲程序(看似简单,但是实现起来却......),想要实现的其中两个功能是:
1. 用户可以在唱歌过程中可以键入 P 暂停唱歌
2. 暂停后,输出提示信息,让用户键入 Y/N 确定退出
在实现第一个功能的时候,我先是用int 16h 的 01h功能判断是否有键入,无效! 后来想到了直接去读60h端口,不知是不是程序写错了,问题未得到解决。
(我找了很多资料还是么找到确切的解决方法。希望大虾门帮帮忙!谢谢!:)
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
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
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
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28