DJGPP下调用中断的方法
2005-04-07 22:11
120 查看
DJGPP是DOS下完整的32位的C/C++保护模式的编译器,运行于386以上机器。DJGPP有一个好帮手叫作Allegro,它是个图形/声音编程库,功能非常强大,应用于界面编程非常方便。可以Allegro编程库编写程序,然后用DJGPP编译。
但是,因为DJGPP是标准C,所以是不存在interrupt,setvect,putvect函数的,这样会让习惯Turbo C的同志遇到点小麻烦,小弟现在就介绍“解决方法”。。。。:)
int _go32_dpmi_get_real_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);
int _go32_dpmi_set_real_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);
int _go32_dpmi_chain_protected_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);
typedef struct {
unsigned long size;
unsigned long pm_offset;
unsigned short pm_selector;
unsigned short rm_offset;
unsigned short rm_segment;
} _go32_dpmi_seginfo;
这就是DPMI.H头文件的几个函数,用法在下面介绍
_go32_dpmi_seginfo OldVect;
_go32_dpmi_seginfo NewVect;
static int NewFunction(); //应用的中断处理函数
_go32_dpmi_get_protected_mode_interrupt_vector(0x0c, &OldVect);//取得旧中断向量
NewVect.pm_offset=(int)NewFunction;//看看结构体的定义就明白了
_go32_dpmi_chain_protected_mode_interrupt_vector(0x0c,&NewVect);//设置新中断向量
这样就可以了,^_^我也是新手 希望能对大家有点帮助 谢谢!
但是,因为DJGPP是标准C,所以是不存在interrupt,setvect,putvect函数的,这样会让习惯Turbo C的同志遇到点小麻烦,小弟现在就介绍“解决方法”。。。。:)
int _go32_dpmi_get_real_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);
int _go32_dpmi_set_real_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);
int _go32_dpmi_chain_protected_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);
typedef struct {
unsigned long size;
unsigned long pm_offset;
unsigned short pm_selector;
unsigned short rm_offset;
unsigned short rm_segment;
} _go32_dpmi_seginfo;
这就是DPMI.H头文件的几个函数,用法在下面介绍
_go32_dpmi_seginfo OldVect;
_go32_dpmi_seginfo NewVect;
static int NewFunction(); //应用的中断处理函数
_go32_dpmi_get_protected_mode_interrupt_vector(0x0c, &OldVect);//取得旧中断向量
NewVect.pm_offset=(int)NewFunction;//看看结构体的定义就明白了
_go32_dpmi_chain_protected_mode_interrupt_vector(0x0c,&NewVect);//设置新中断向量
这样就可以了,^_^我也是新手 希望能对大家有点帮助 谢谢!
相关文章推荐
- LINUX AM335X NMI中断使用方法
- c6000 中断使用方法
- 单片机的延时与中断问题及解决方法
- Thread中断线程的方法
- java线程基础巩固---Thread中断Interrupt方法学习&采用优雅的方式结束线程生命周期
- 中断方式下进行串口通讯的正确方法
- php 更新数据库中断的解决方法
- Android 广播机制(两种注册方法)与中断广播
- 测试Socket中的一个中断的方法
- 中断是硬件与软件打交道的重要方法
- ”由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系” 解决方法
- PHP中用set_time_limit(0)长连接的实现--更新数据库时间限制中断解决方法
- 基于UC/COSII系统的STM32F103系列单片机外部中断按键的一种使用方法
- Android广播机制(两种注册方法)与 中断广播
- 《小谈DJYOS中断线的配置方法》
- STM32串口一直进中断解决方法
- C51:串口接收和发送,查询与中断方法
- Android中断并重启一个Thread线程的简单方法
- adobe reader安装完成之前被中断,错误代码150210解决方法
- 数据源不定时间段后连接中断(解决方法:连接关闭后设置自启动,重新自动连接;Jboss异常:SQL Error 17002和SQL Error 17008