内中断
内中断
1.0 简介
- 中断时CPU处理外部突发事件的重要技术
- 它能使CPU在运行过程中对外部事件发出的中断请求进行处理,处理后又返回断点,继续进行CPU原来的互作
- 引起中断的原因叫做中断源,根据中断源的不同,可以把中断分为硬件中断和软件中断
- 硬件中断又可以分为外部中段和内部中断两类
- 外部中段一般是指由计算机外设发出的中断请求:如:鼠标,键盘,打印机 ,外部中断是可以屏蔽的,可以利用中断控制器屏蔽这些外部设备的中断请求
- 内部中断是指硬件出错,如:(停电 奇偶校验错 或者是运算出错,除数为零,溢出等)内部中断是不可屏蔽的中断
- 软件中断不是真正的中断,int 21H等都是软件中断
- CPU为了处理并发的中断请求,规定了优先权,中段优先权从高到低是
- 除法错 溢出中断 软件中断
- 不可屏蔽中断
- 可屏蔽中断
- 单步中断
1.1 中断处理程序
- CPU设计者必须在中断信息和其处理程序的入口地址之间建立某种连续,是CPU根据中断程序可以找到要执行的处理程序
- 比如cpu根据中断类型码4,就可以找到4号中断处理程序
- 可随之而来的是,若要定位中断处理程序,需要知道他的段地址和偏移地址,而一个中断类型码为一个字节,如何的得到中断处理程序的段地址和偏移地址尼?
- 这里就要引用“中断向量表”。
1.2 中断向量表
- CPU用8位的中断类型码中国中断向量表找到相应中断处理程序的入口地址
- 中断向量表在内存中表示,其中存放256个中断源所对应的中断处理程序的入口
- 对于8086PC中断向量表是存放在内存地址为0处
- 从内存0000:0000~~0000:03ff的1024个字节存放这中断向量表
1.3 中断过程
- 找到中断向量表中的中断处理程序入口,用它设置CS:IP,使CPU执行中断处理程序
- 8086中断过程
- 获得中断类型码
- 标志寄存器的值入栈
- 设置标志寄存器的第8为TF和第九位IF的值为0
- CS入栈
- IP入栈
- 在内存中读取出中断处理程序的入口地址 设置CS:IP
- iret通常和硬件自动完成中断程序配合使用
- iret用汇编来表示
- pop ip
- pop cs
- popf
1.4 除法错误中断处理
-
溢出处理
-
assume cs:code code segment start: mov ax,1000 mov bh,1 div bh code ends end start -

-
我们可以通过中断向量表中的更改程序入口地址,让程序发生中断处理的时候,让计算机执行我们自己的代码
1.5 单步中断
-
CPU在执行一条指令后,如果检测标志寄存器的TF位为1,则产生单步中断,引发中断
-

-

1.6 影响中断的特殊情况

1.7 int 指令
-
int 中断
-
int 格式
- int n n为中断类型码,它的功能是引发中断过程
-

-
可以在程序中用int'指令调用任何一个中断处理程序
1.8 bios和dos中断处理程序的安装过程
- 略
1.9 端口
-
CPU可以直接读写3个地方的数据
- 寄存器
- 内存单元
- 端口
-
端口的读写指令,in和out
- 使用in和out 指令时只能使用ax或al来存放从端口中读取或送到端口的数据

2.0 shl和shr指令
- 逻辑位移指令
- shl 功能
- 将一个寄存器或内存单元的数据向左移位
- 将最后移出的一位写入CF中
- 最低用0填充
- 如果移动位数大于1的话,将移动的位数放在CX中
- shr 相反功能 -----

浙公网安备 33010602011771号