| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2986 人关注过本帖
标题:中断描述符表中断号和键盘等硬件的对应关系
只看楼主 加入收藏
luohua2007
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2007-4-11
收藏
 问题点数:0 回复次数:9 
中断描述符表中断号和键盘等硬件的对应关系

保护模式下发生中断或者异常时,处理器先从IDTR寄存器得到中断描述符表(IDT)的地址,然后取出其中N号中断或者异常的门描述符,再丛描述符中得到中断服务程序的地址XXXX:YYYYYYYY,经过段地址转换后得到服务程序的32位线性地址转移后执行,


我找了好久,一直不明白中断描述符表(IDT)的中断号和硬件产生的中断号有什么固定对应关系没有,
比方说,在实摸下,键盘中断号在中断向量表里面就是INT 9号中断,很固定,
现在我想知道,在XP下,在RING0特权级中,中断描述符表(IDT)的每个中断号是不是都是对应固定的硬件中断呢,比如说,键盘,鼠标等等,我一直查不到这方面的资料,网上和书上都是只说了中断描述符表前16个中断号的硬件对应关系,就是没有说键盘,鼠标其它等等的,


实摸下我很清楚,也能写自己的中断例程
其实我就是不知道,在保护模式下,当产生了个硬件中断,它所对应的是哪个中断号,以及它和这个中断号是不是一直都是固定的关系,(听有人说,没有规定的关系,中断描述符表(IDT)的中断号只要电脑启动一次,就变一次,)我差点晕死,如果是这样的话,当一个硬件产生中断,我该如何把握呢,我如何编写自己处理它的中断程序呢,

有点长,请大家能指点一下,也希望大家告诉我哪有中断描述符表(IDT)所有中断号的详细介绍说明,谢谢了 :(

搜索更多相关主题的帖子: 符表 硬件 寄存器 键盘 关系 
2007-06-08 01:37
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
保护模式下是无法修改中断表的,除非你有0级别的权利,WINDOWS XP的中断序列表不是固定的,所以每次启动电脑时都已经分配好,所以硬件中断只有windows才能访问以及修改。应用程序是无法访问和修改的,不过可以写一个VxD工作在0级别下,但门槛也比较高

2007-06-08 08:58
luohua2007
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2007-4-11
收藏
得分:0 
以下是引用余来在2007-6-8 8:58:20的发言:
保护模式下是无法修改中断表的,除非你有0级别的权利,WINDOWS XP的中断序列表不是固定的,所以每次启动电脑时都已经分配好,所以硬件中断只有windows才能访问以及修改。应用程序是无法访问和修改的,不过可以写一个VxD工作在0级别下,但门槛也比较高

我已经假设进入到XP 的RING0级别了,那我上面的问题是什么答案呢,
XP的中断序列表中的每个中断号是不是和硬件中断是相对应的呢,


还是说,这次键盘(IRQ1)中断用的是中断序列表的1号中断,而下次开机用的也可能就变成2号,或者3号中断了。
是不是这样的呢
能给肯定一下吗,谢谢了


来生 再续前缘 孟婆浅浅一笑 低头看那一锅普通的汤 只因加了一味叫遗忘的草料 也抵过了曾经的万千誓言
2007-06-08 13:31
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
是固定好了一个IDT表了,不过存放内存位置不像以前DOS时代放到固定地址了,动态分配的位置

2007-06-08 13:36
luohua2007
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2007-4-11
收藏
得分:0 

谢谢了,我先去在把书好好看一看把,其实是一直不知道该看什么书,
我知道IDT表的位置不是固定的,看你说来IDT表里面的每个中断符也不是固定的

等我看完资料后在向你请教好了,

谢谢了


来生 再续前缘 孟婆浅浅一笑 低头看那一锅普通的汤 只因加了一味叫遗忘的草料 也抵过了曾经的万千誓言
2007-06-08 21:33
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
IDT表的各个值是固定的,只是它的内存位置不是固定的

2007-06-08 23:18
luohua2007
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2007-4-11
收藏
得分:0 

看了几天32位保护模式基础书,还是有点不太肯定,书上都没说的很清楚(直接),

还是想请斑竹给指点一下,

假设我已经进入到XP 的RING0级了。
这时候我按下键盘,系统会去中断描述符表IDT找一个对应键盘中断的描述符,假设为32号,
重启电脑:我再按下键盘,系统也会去中断描述符表找一个对应键盘中断的描述符,这时候描述符就不会还是32号了把


就是这个疑问了,和以前的疑问还是一样了,白看几天书了,




来生 再续前缘 孟婆浅浅一笑 低头看那一锅普通的汤 只因加了一味叫遗忘的草料 也抵过了曾经的万千誓言
2007-06-12 16:05
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
假如是32的话,那应该还是32

2007-06-12 18:36
luohua2007
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2007-4-11
收藏
得分:0 
以下是引用余来在2007-6-12 18:36:52的发言:
假如是32的话,那应该还是32

谢谢了,记得看过一个不知道谁写的文章,
说每次电脑启动中断符号表里的中断符号都是不一样的,这次的键盘中断描述符号是32号,
等电脑重启后,就变了,
等我找见那文章,给你看看,一直很迷惑这点


来生 再续前缘 孟婆浅浅一笑 低头看那一锅普通的汤 只因加了一味叫遗忘的草料 也抵过了曾经的万千誓言
2007-06-12 21:15
jiawang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-2-18
收藏
得分:0 
呵呵,看的不够仔细
其实你仔细看看ICW2字的作用就知道了:
ICW2 用于设置芯片送出的中断号的高5位。什么意思呢,就是说从中断控制器发出的中断信号的高5位就是在ICW2里设置的。
在linux 0.11里系统把主片的ICW2设置为0x20,就表示中断请求IR0~IR7中断号的范围是0x20~0x27(8259A芯片产生的IRQ号必须是连续的,所以也只需要设置起始号就ok了!)
`
2010-02-18 22:17
快速回复:中断描述符表中断号和键盘等硬件的对应关系
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014434 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved