|
主题 : : 由课程14.4和15.5引发的思考:请教高手解释int9的作用到底是什么 [待解决] |
回复[ 5次 ]
点击[ 438次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-07-11 17:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-27 23:32 |
在课程15.4和15.5中,在自己编的int9中断程序中,有一句 in al,60h ;
这之后都有pushf;call dword ptr cs:[200h]这两句再调用原来的int9中断程序;
我不理解int9的作用具体是什么,我的想法是有了in al,60h不就够了吗,此条指令可以读取键盘输入情况,然后直接用cmp指令进行比较不行吗,为什么还要调用int9中断程序呢。。。然后我把这两个课程中的程序中的“pushf;call dword ptr cs:[200h]”删去,结果在运行的时候,颜色能改变,可是只能改变一次,所以我知道我肯定是错了,但是请问各位高手,调用新编的int9程序中调用原来的int9中断程序的作用是什么呢?它和in al,60h的作用不重复吗? | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-07-24 14:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-06-13 15:40 |
书上有一句话,
发生键盘中断的时候,要做许多事情,而这些事情不是以学到这一步就能够理解的。
为了能执行自定义的INT9,而又在不了解如何做那些事情的基础上,把那些事情做了,
可以调用 系统自带的 INT9,这个原来的INT9可以帮助你把 应该做的事情都做掉,不用你操心
而你需要做的,就是 把原来INT9的 入口地址保存,并且在你自定义的INT9中,调用那段系统自带的INT9程序即可
新手个人理解,不对别骂,谢谢 | | |
|
|
|
|
[第2楼]
[ 回复时间:2011-07-24 14:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-06-13 15:40 |
IN AL,6OH 只是从端口把当前的 扫描码读出来,
至于 其他功能---比如把你输入的字符显示出来,都是 老 INT9做的事情,
如果你不调用老INT9的话,就不能做出来那些功能了
这就是 调用老INT9 程序的 作用吧 | | |
|
|
|
|
[第3楼]
[ 回复时间:2011-12-06 15:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-11-11 23:27 |
9h 中断例程 是 键盘中断例程
如果想实现 按一下 a 就改变 屏幕颜色的 功能 同时不影响其他按键的默认功能
首先就要按键盘a 然后 默认会引发9h号 中断例程 但 9h号中断例程 不会因为按了a就改变屏幕颜色
如果要让9h号中断例程中具有按下a 就改变颜色的功能 就要修改9h号中断例程
但目前的水平谈何容易,所以 就想到了 在9h号中断套一层 具有按下a就改变颜色的功能
也就是:本来按键是直接 被9h号中断例程处理 ,现在要写一个程序 实现按下a改变颜色 接着再去调用原 bios的9h号中断例程, 用这个程序的入口替换原来9h号中断例程的入口地址 间接的调用9h号中断例程 这样 既实现 a 的功能 也不影响 其他按键的功能
所以就叫着 修改的中断例程 中 调用 原中断例程 | | |
|
|
|
|
[第4楼]
[ 回复时间:2012-04-23 13:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
|
|
|
|
|
[第5楼]
[ 回复时间:2012-04-23 13:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
p300
既然键盘缓存区有16个字单元,为什么只存15个扫描码和所对应的ascii码呢? | | |