请教getvect和setvect函数
想自己重新实现getvect和setvect的功能,所以自己写了get_vect和set_vect,结果很郁闷,总是出问题,有谁能给点建议吗,下面是测试例子的部分代码typedef void interrupt (* interrupt_function)(void);
/*
* 传入 中断号,根据中断号返回中断号所对应的中断处理函数的地址
*/
interrupt_function interrupt get_vect(unsigned int interrupt_number) {
/*dos是运行在实模式下,在访问其他段时,用far指针
* 中断向量是存放在内存的 0x0-0x3ff,每个中断向量用4字节存放
* 中断号*4=中断函数的入口地址
*/
interrupt_function far * interrupt_pointer = (interrupt_function far *)(interrupt_number * 4);
return (*interrupt_pointer);/* 返回中断函数的地址 */
}
/*
* 修改中断号对应的中断函数地址
*/
void interrupt set_vect(unsigned int interrupt_number, interrupt_function int_fun) {
/*
* 中断号*4= 中断函数的地址
*/
interrupt_funtion far * interrupt_pointer = (interrupt_function far *)(interrupt_number * 4);
*interrupt_pointer = int_fun; /*修改中断号的中断函数地址*/
}