
中断事件指的是一个事件,就是中断产生这个事件。而中断程序是指在中断发生后执行的动作、程序。只有在中断事件产生后中断程序才会执行。
中断事件跟中断程序的区别是中断事件是触发条件,中断程序是条件满足了或者触发了中断事件后执行的一段程序。
举个例子来说 当鸡蛋掉在地上打碎了要做清洁;鸡蛋掉在地上打碎了 是中断事件 做清洁则是中断程序。
它们都是 *** 作系统概念。中断调用是DOS *** 作系统中,系统调用的特殊形式而已。
系统调用,都是指 *** 作系统的开发者,提供了许多系统的程序库,实现输入/输出等基本的功能,我们编写程序的时候就调用这些程序库,不必要自己到显示器上绘图和读取键盘端口。
在UNIX *** 作系统下,系统调用主要是C语言格式调用的一些函数库。比如printf和scanf函数,我们写程序的时候直接可以码皮用,编译系统把它转变为对 *** 作系统函数库调用的代码,目标文件可以独立运行。
在WINDOWS系统,系统调用主要是以一系列的DLL、EXE文件方式给出,比如USER32.DLL、NTDLL.DLL等,编写程序的时候可以直接调用里面的GETDC等函数库。
在DOS系统下迹山, *** 作系统不以函数库形式提供系统调用,而是把整个 *** 作系统的所有代码都LOAD到内存里面,把相关系统调用功能安装到中断接口里面,我们写的程序需要调用姿模中的时候,调用相应的中断。比如打开文件等 *** 作,就调用INT 21。
我告诉你思路,例子就不举了,很简单:1、定义一个dword变量xxx用以存储原来的中断向量(所谓中断向量即中断发生时执行的子程序入口地址)
2、编写自己的中断处理过程(yyy proc far),该处理过程内应保存所尺哪悉有可能修改的寄存器,并在返回前恢复原状;一般情况下,如果还需要执行原有中断处理过程,那么调用jmp far xxx链接到原来的中断过程;如果不需要执行原有过程,那么直接以iret返回即可
3、在主程序开始时,先调用int 35h,缓握获取指定中断号的中断向量,将返回的中断向量存储在xxx变量中
4、调用int 25h,将指定的中断号的中断向量指向自己的过程yyy
5、当前程序在退出前,应陵乎再次调用int 25h,将被修改掉的中断号的中断向量恢复为xxx变量的值
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)