关于键盘中断

GhostAdz 2003-08-22 03:49:51
谁能清楚的讲一下键盘中断 的全过程 整个过程
先是 9号中断 然后 放在键盘缓冲区 什么的
比如怎么打出来的 是 int 16h 吗
...全文
381 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ikao 2003-08-29
  • 打赏
  • 举报
回复
借用int 9的中断入口可以实现“所见非所按”的功能吧,比如我按下A,结果显示出了B,呵呵
Areslee 2003-08-29
  • 打赏
  • 举报
回复
yes
Clevor 2003-08-26
  • 打赏
  • 举报
回复
ikao(我要好好学习学习)说的已经很靠谱了,就差一点没谈到。
INT9是硬件中断的处理程序,每次敲击键盘会执行这个程序。
INT16H并不是中断处理程序,只是借用了INT这几个字母而已,应该叫‘BIOS’服务程序,应用程序是通过INT16H来访问键盘的。不同的应用程序可以使用相同的方式,我们的程序才能COPY来COPY去的。
不同的键盘,中断入口都是一样的,INT9这个入口。中断向量表的第9个入口,在这里放的是一个地址,一段程序的入口。这段程序的内容可以不一样,这样对应不一样的键盘。一般来说,应用程序不直接执行这里的程序。我们说的键盘缓冲区的内容是这个程序负责维护的。
借用这个中断入口是可以的,但一定要记得调用原来的中断处理程序,不然应用程序都跑乱的,键盘都不见了。
Areslee 2003-08-26
  • 打赏
  • 举报
回复
INT 16H要做的事只是检查键盘缓冲区
ikao 2003-08-26
  • 打赏
  • 举报
回复
EOI就是中断命令寄存器中的5位表示End Of Interrupt
发了后就表示本中断结束,允许同级别或低级别的中断产生
DoItFreely 2003-08-23
  • 打赏
  • 举报
回复
抓一个主板的升级包来,把它反汇编了,自己看,呵呵
GhostAdz 2003-08-23
  • 打赏
  • 举报
回复
楼上说的我都知道
我问的是完整的过程!
GhostAdz 2003-08-23
  • 打赏
  • 举报
回复
接收中断,从端口取扫描码,然后转换成ASCII码存入键盘缓冲区
最后发EOI

发EOI是什么意思 最后是如何用到int 16的什么功能的
ikao 2003-08-23
  • 打赏
  • 举报
回复
我是这样理解的,不知道对不对:
int9h属于8259中断类型,8259中断控制器在接收到键盘中断(IRQ1)以后判断是否满足条件,满足的话,告诉CPU让它处理,把扫描码和ASCII写入键盘缓冲区
键盘缓冲区的结构和内存区域如下:
BUFF_HEAD DW ? ;0040:001AH
BUFF_TAIL DW ? ;0040:001CH
KB_BUFFER DW 16 DUP(?) ;0040:001EH TO 003DH
BUFF_HEAD和BUFF_TAIL是缓冲区的头指针和尾指针
调用int 16h可以读出这个缓冲区里的内容

不过int 9h和int 16h具体如何处理的
还要请高人指点啦
紫郢剑侠 2003-08-23
  • 打赏
  • 举报
回复
接口技术里有.
Areslee 2003-08-23
  • 打赏
  • 举报
回复
接收中断,从端口取扫描码,然后转换成ASCII码存入键盘缓冲区
最后发EOI
bmj 2003-08-22
  • 打赏
  • 举报
回复
键盘的中断有dos和bios两种中断,bios 的中断是16h,有3个不同的功能,分别根据ah中的内容来选择:
ah 功能 返回参数
0 从键盘读一个字符 al=字符码,ah=扫描码
1 读键盘缓冲区的字符 如zf=0,则al=字符码,ah=扫描码
如zf=1,缓冲区空
2 取键盘状态字节 al=键盘状态字节
dos中断(21h)的入口参数(ah)有7个,分别是1,6,7,8,a,b,c,我就不写功能和返回参数了,你自己去查资料吧!
laozheng2000 2003-08-22
  • 打赏
  • 举报
回复
我也想知道

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧