不理解软件中断。求大家给解释下。

2019-03-24 14:07发布

看到软件中断的定义:人们通常用相应的指令来使CPU相应中断,CPU只要执行这种指令就会转入相应的中断服务程序执行,以完成相应的中断操作。
这看起来怎么像是在一个程序中调用另外一个子程序啊?          软件中断和程序之间的调用有什么区别啊?

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
shower.xu
2019-03-24 20:50
< 网上找的,觉得比较能说明问题,分享下
软中断是实现系统API函数调用的手段
  函数调用时将返回地址和CPU状态寄存器内容压栈,函数执行完毕后出栈返回断点继续执行。
  软中断调用时将返回地址和CPU状态寄存器内容压栈,修改特权级,根据中断号查找中断向量表,找到ISR中断服务例程地址,跳转执行。
  综上,函数调用和软中断调用的区别是,软中断多了修改特权级和查找中断向量表的功能,其他部分完全一样。
  一般,系统程序由软件公司实现且不开源,你无法知道系统API函数的偏移地址,而且你写的应用程序和软件公司提供的系统程序是完全分开的,编译器无法将二者链接在一起,同时,系统程序需要核心态特权才能运行,此时用函数调用的办法是无法调用系统API函数的。解决这个问题的方法是使用软中断,当应用程序需要调用API时,就先设置功能号(如AX=0H),然后触发软中断(如INT 80H)。系统程序设置好中断向量表。这样,应用程序就可以间接找到系统API了。
  有了软中断,就可以实现应用程序的动态加载。就像WINDOWS/Linux那样,应用程序和系统程序分别开发,不在一起编译连接,应用程序通过软中断调用系统提供的功能。

一周热门 更多>

相关问题

    相关文章