中断事件和中断程序有什么不同?

中断事件和中断程序有什么不同?,第1张

中断事件指的是一个事件,就是中断产生这个事件。而中断程序是指在中断发生后执行的动作、程序。只有在中断事件产生后中断程序才会执行。

中断事件跟中断程序的区别是中断事件是触发条件,中断程序是条件满足了或者触发了中断事件后执行的一段程序。

举个例子来说   当鸡蛋掉在地上打碎了要做清洁;鸡蛋掉在地上打碎了 是中断事件   做清洁则是中断程序。

它们都是 *** 作系统概念。中断调用是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变量的值


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12285208.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存