注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

用debug做键盘中断INT9测试  

2014-01-27 15:29:56|  分类: 一些练习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用debug做键盘中断INT9测试

                                                                                                                     hcper @ 2012.9.3

在做多任务的时候,要选择一种中断,以方便调试。选择定时中断INT8是个不错的选择,

但是该中断每秒变化18.2次,太快了不利于查看结果。选择软中断呢,又必须自己去主动调用才能

有结果,而且位置只能是固定的,不能随机触发。最好是硬件方面的中断,比如键盘、鼠标等,这样我们可以通过按一下键盘或者动一下鼠标来触发,这样有利于调试和分析。

 

昨天试着用debug做了个键盘中断INT9的测试,刚开始也出现了像定时中断INT8一样的问题,

只能响应一次中断。网上的资料都只是相当于hook,因为他们最终的调用还是要跳到以前保存

地址去。这不是我要的。后来想INT9和INT8都是同一个器件产生的,那INT8最后要发EOI命令

,INT9也应该要发EOI命令,改了一下程序,结果是这样的。

 

用如下文本文件int9.txt在xp的cmd下

输入debug <int9.txt

就可以生成int9.com测试程序了。

 

该程序每按一下键,输出两个字符。按下触发一次释放也触发一次,所以每次输出两个字符。

这些键包括各种控制键都会有输出。还有一些控制键每按一下,不止两次,你在测试的时候

会发现输出了好几个字符。

 

F 100 L 200 0
A100
CLI
XOR     AX,AX
MOV     ES,AX
ES:
MOV     WORD PTR [0024],0200
ES:
MOV     [0026],CS
STI
MOV     SI,0000
MOV     BX,2041
JMP     0118

 

A200
CLI
PUSH    AX
MOV     AX,B800
MOV     ES,AX
ES:
MOV     [SI],BX
INC     SI
INC     SI
CMP     SI,0800
JB      0214
XOR     SI,SI
INC     BL
CMP     BL,5B
JB      021D
MOV     BL,41
MOV     AL,20
OUT     20,AL
POP     AX
STI
IRET

 

RCX
200
N INT9.COM
W
Q

 

  评论这张
 
阅读(228)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017