Bikky
驱动牛犊
驱动牛犊
  • 注册日期2003-12-01
  • 最后登录2017-02-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望11点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1060回复:2

8086中断问题...

楼主#
更多 发布于:2004-06-30 08:45
各位大侠,在X86体系下,有关中断有二点请教:
1,<WINDOWS2000驱动开发指南>一书中指出,内核驱动代码各在不同的优先级执行,如硬件中断服务程序在DIRQ级上执行,而应用程序的读写中断在DISPATCH_LEVEL级上执行,显然后者的优先级低于前者,那么如果有如下情况:当一个硬件中断到来后,此时内核代码跳到硬件中断服务程序中去执行,而此时恰好有应用程序发来了一个"Write"请求,也就是应用程序来了一个中断,那么在刚才的硬件中断还没退出的情况下,内核是否会立即响应这个应用程序的写中断呢?而我一个搞TC的朋友告诉我,8086的中断机制中优先级仅仅指二个中断同时来时,优先级高的先响应,而不说在执行中断服务程序代码时就不能响应优先级高的中断,我理解为后者,因为我是搞单片机的,在单片机中就是后者那样,在优先级高的中断服务程序中是不能响应比它级别低的中断的,除非这个中断服务程序退出后才能响应低优先级的中断.不知有哪位大侠能给我讲讲8086的中断机制中中断优先级是个上述二种情况中的哪一种?
2,在PC机中,我在一个驱动程序中要用二个硬件中断,我想在一个中断到来后就关另一个中断,仅仅只想关一个,也就是说我在IRQ5到来后,在中断服务程序中关IRQ7,如何用汇编实现?具体是哪条语句?不是说要关总中断,只想关某一条中断.
百克
flyonearth
驱动中牛
驱动中牛
  • 注册日期2002-12-25
  • 最后登录2009-07-01
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-07 10:57
第一个问题,硬件中断的优先级(IRQx)和内核划分的软件运行的优先级(IRQL)有一定的联系,但不是一个概念,不要搞混了。
第二个问题,IRQ5的优先级比IRQ7高,在处理完IRQ5中断之前是不会响应IRQ7的。如果只是想关闭IRQ7的话,可以试试替换IRQ7的中断处理程序,直接返回就行了。
boly81
驱动小牛
驱动小牛
  • 注册日期2004-06-25
  • 最后登录2012-06-08
  • 粉丝0
  • 关注0
  • 积分490分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-08 12:09
8086允许处理硬中断时响应级别较低的硬中断,只要你在当前硬中断处理程序中设置8259中当前中断号的屏蔽位,详情请看微机原理中的8259编程。

游客

返回顶部