高手请! 关于中断的问题!

dycdyc123 2002-04-20 08:52:20
#include <dos.h>
#include <stdio.h>
#include <conio.h>
void interrupt alarm(void)
{
char Port61_Old_Status;
char Port61_New_Status;
int DelayTime=0x300;
int Count=0;
int i;
Port61_New_Status=Port61_Old_Status=inportb(0x61);
Port61_New_Status&=0xfd;
for(Count=0;Count<0x300;Count++,DelayTime--)
{
Port61_New_Status^=0x02;
outportb(0x61,Port61_New_Status);
for(i=0;i<DelayTime;i++)
printf("I love you");
}
outportb(0x61,Port61_Old_Status);
outportb(0x20,0x20);
}
void main()
{
int IMR,base=0x300;
void interrupt (*Int_A_Old_Vector)();
Int_A_Old_Vector=getvect(0x0a);
setvect(0x0a,alarm);
IMR=inportb(0x21);
outportb(base+3,0x80);
clrscr();
printf("Press any key to generate a rising edge interrupt...");
getch();
outportb(0x21,0xfb&IMR);
outportb(base+2,0x0);
printf("\n\nPort C0 = %x",inportb(0x2c2));

outportb(base+2,0x01);
printf("\n\nPort C0 = %x",inportb(0x2c2));
printf("\nPress any key to quit...");
getch();
setvect(0x0a,Int_A_Old_Vector);
outportb(0x21,IMR);
outportb(base+3,0x9b);
}

(对PCL—731 I/O卡)

我不明白void interrupt (*Int_A_Old_Vector)();
Int_A_Old_Vector=getvect(0x0a);
setvect(0x0a,alarm);

这是什么意思??

再者,为什么没发生中断响应??
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BCB 2002-04-22
  • 打赏
  • 举报
回复
17461273
BCB 2002-04-21
  • 打赏
  • 举报
回复
跟DOS的实方式不同,windows运行在保护方式下,这些低层的东西
要在特权方式才能访问,跟DOS的中断非常不一样了,称为中断门了,
要找本保护方式下的编程看看了,虚拟存储,中断门,...,头晕

dycdyc123 2002-04-21
  • 打赏
  • 举报
回复
bcb(天下三分明月夜,二分无赖是扬州) :

感谢!

我怎么实现在Windows中断!
BCB 2002-04-21
  • 打赏
  • 举报
回复
void interrupt (*Int_A_Old_Vector)();
Int_A_Old_Vector是指向turbo_c中断处理函数的指针;
形如 void interrupt IntProFun( )的函数称为DOS中断处理函数,
这个函数的特别性在于,函数结束时,象处理中断结束一样,从栈
中清掉原先压入的寄存器标志;
Int_A_Old_Vector=getvect(0x0a); // 取出10号中断向量保存起来
setvect(0x0a,alarm); // 将10号中断向量指向新的中断
// 处理函数alarm






BCB 2002-04-21
  • 打赏
  • 举报
回复
呵呵,上个世纪的DOS问题,请考古学家出山 :)
dycdyc123 2002-04-21
  • 打赏
  • 举报
回复
怎么没人回答??
dycdyc123 2002-04-21
  • 打赏
  • 举报
回复
bcb(天下三分明月夜,二分无赖是扬州) (:

你的QQ是多少??

我给分!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧