《汇编语言》王爽,学习笔记(内中断,端口)

这是个人学习笔记的最后一段了,由于目的不同,所以并没深入了解BIOS,和对键盘中断的反应,所以这里只稍微介绍一下内中断与端口。

1.内中断

什么是中断,中断就是一种特殊的信号,CPU一旦检查到了这种信号,他就会停止当前的指令,转而去处理这个特殊的信号,中断信号分为两种,一种是内中断,也叫程序中断,另一种是外中断,也叫硬件中断,硬件中断一般是某某某硬件准备好了,向CPU请求中断,而程序中断一般是出现了一些错误,如除数为0,或者人工进行中断,如Debug。

由于CPU随时都可能检测到中断的信息,所以处理中断的程序需要一直存放在某段内存中,为了处理这种情况,在内存中就出现了中断向量表这个东西,他存放的是处理中断程序的入口地址,类似与哈希表,他的键值是一个中断向量(8位的中断类型码),映射的对象就是程序入口地址(CS:IP),在8086CPU中,它存在与内存地址0处。

在程序中,我们使用inc指令来调用中断程序,inc指令后面的参数就是中断类型码,用来在中断向量表中搜寻相应的程序。

int 7h                 ;调用中断类型码为7h的中断函数。

整个中断的过程与调用子程序完全一致,只是CPU需要在中断向量表中取得中断程序的入口地址。

中断程序由iret指令返回,int与iret和call与ret意义类似,只是int调用的是中断函数。

若想在计算机中使用自定义的中断函数,只需要将中断函数的地址注册到中断向量表中就可以了,即将中断向量表中空闲的位置写入自定义中断函数的CS与IP。

2.端口

各种存储器都和CPU的地址,数据,控制总线相连,CPU在控制他们的之后,把他们都当作内存来对待,比如显卡,显卡对于CPU来说就是一段显存,CPU将数据写入显存中,显卡再将显存中的数据展现在屏幕之上。

也就是说,从CPU的角度,将这些外部存储器都当作端口,对它们进行统一编址,从而建立了端口地址空间,每一个端口在地址空间中都有一个地址,这些端口也成为了CPU与外界交互的通道,总而言之,CPU只会在内存中读写数据。

你可能感兴趣的:(《汇编语言》王爽,学习笔记(内中断,端口))