当前位置: 代码迷 >> C语言 >> [求助]一个中断函数,为什么这样用?
  详细解决方案

[求助]一个中断函数,为什么这样用?

热度:341   发布时间:2006-06-21 15:26:17.0
[求助]一个中断函数,为什么这样用?
void irq3()
{
disable(); /*关中断*/
oldint1=inp(0x21); /*取0x21里内容*/
startint1=oldint1&0x07; /*取低3位*/
stopint1=oldint1|0xf8; /*取高5位*/
oldirq3=getvect(0x0B); /*保存原irq3中断内容*/
setvect(0x0B,newirq3); /*装入新irq3中断*/
outp(0x21,startint1); /*把低3位送入0x21*/
enable(); /*开中断*/
}
注释是我根据自己的理解加上去的,不知道是不是这样理解的?
能不能解释一下:
1.取0x21里的内容干什么用?这个地址里有什么东西?
2.为什么要单独取低3位和高5位?
3.把低3位送到0x21里干嘛?
搜索更多相关的解决方案: 函数  

----------------解决方案--------------------------------------------------------
以下是引用fgilt在2006-6-21 15:26:17的发言:
void irq3()
{
disable(); /*关中断*/
oldint1=inp(0x21); /*取0x21里内容*/
startint1=oldint1&0x07; /*取低3位*/
stopint1=oldint1|0xf8; /*取高5位*/
oldirq3=getvect(0x0B); /*保存原irq3中断内容*/
setvect(0x0B,newirq3); /*装入新irq3中断*/
outp(0x21,startint1); /*把低3位送入0x21*/
enable(); /*开中断*/
}
注释是我根据自己的理解加上去的,不知道是不是这样理解的?
能不能解释一下:
1.取0x21里的内容干什么用?这个地址里有什么东西?
2.为什么要单独取低3位和高5位?
3.把低3位送到0x21里干嘛?

楼主所问的IRQ3函数实际是为第2串行口保留的外部中断
手头资料欠缺,只能答这么多。0x21是端口地址。
----------------解决方案--------------------------------------------------------

我知道irq3是外部中断.
其他的还是不明白.


----------------解决方案--------------------------------------------------------
1。找DOS时期微机硬件资料。
2。求助于“电脑硬件”论坛。

[此贴子已经被作者于2006-6-21 20:46:11编辑过]


----------------解决方案--------------------------------------------------------
恩,谢谢提醒
----------------解决方案--------------------------------------------------------
  相关解决方案