FunyFugh 发表于 2019-1-25 20:58:36

关于中断机制

以0号中断为例,当发生除法溢出时,8086CPU是如何知道这个中断是0号中断并转去执行中断服务程序的?

行客 发表于 2019-1-26 07:12:38

首先我们来修正一个概念:

中断:中断是指来自CPU执行指令以外的事件发生后,处理机暂停正在运行的程序,转去执行处理该事件的程序的过程。

异常:异常是指源自CPU执行指令内部的事件发生后,处理机暂停正在运行的程序,转去执行该事件的过程。

区别:广义的中断包括中断和异常,统一称为中断。狭义的中断和异常的区别在于是否与正在执行的指令有关,中断可以被屏蔽,异常不能被屏蔽,一旦出现应立即处理。


异常是指源自CPU执行指令内部的事件发生后,处理机暂停正在运行的程序,转去执行该事件的过程。

被零除异常(INT 0),是优先级最高的内部异常。

异常是CPU在执行指令期间检测到不正常的或非法的条件所引起的。异常与正执行的指令有直接的联系。当发生这些情况时,指令就不能成功完成。软中断指令“INT n”和“INTO”也归类于异常而不称为中断,这是因为执行这些指令产生异常事件。

CPU识别多种不同类别的异常,并赋予每一种类别以不同的中断向量号。异常发生后,处理器就像响应中断那样处理异常。即根据中断向量号,转相应的中断处理程序。把这种中断处理程序称为异常处理程序可能更合适。

FunyFugh 发表于 2019-1-26 10:50:38

行客 发表于 2019-1-26 07:12
首先我们来修正一个概念:

中断:中断是指来自CPU执行指令以外的事件发生后,处理机暂停正在运行的程序 ...

关于中断和异常,在王爽的汇编语言中,应该是没有做区分,为了照顾初学者,谢谢你的解释,我对于中断的理解更全面和深入。

丶忘却的年少o 发表于 2019-1-30 13:57:32

怎么说那,就是有个消息机制吧,当CPU执行出现了错误就会出现异常消息,会到异常表里去匹配是什么异常,然后做对应的异常处理。
应该是这么个流程{:10_245:}
页: [1]
查看完整版本: 关于中断机制