CPU响应中断过程 2. CPU转入中断服务过程 从数据总线读取由外设输入的中断类型号 标志寄存器PSW的值入栈 PSW中的中断允许标志IF和单步标志TF清0 保护断点,下一条指令的段地址CS和指令指针 P的值入栈 取中断向量表的中断入口地址,转入中断服务 子程序 中断处理程序结束后,从堆栈依次弹出P、CS 和PSW,返回主程序断点处继续执行 16/66
16/66 CPU响应中断过程 2. CPU转入中断服务过程 从数据总线读取由外设输入的中断类型号 标志寄存器PSW的值入栈 PSW中的中断允许标志IF和单步标志TF清0 保护断点,下一条指令的段地址CS和指令指针 IP的值入栈 取中断向量表的中断入口地址,转入中断服务 子程序 中断处理程序结束后,从堆栈依次弹出IP、CS 和PSW,返回主程序断点处继续执行
CPU响应中断过程 ■ 非屏蔽中断请求NMl CPU检测有NMI,不必判断IF标志,内 部自动产生中断类型号N=2,并转入相 应中断服务过程 ■软件(内部)中断NTn 由软件设定,不受IF标志影响,CPU内 部形成中断类型号N=n,并转入相应中 断服务过程 17166
17/66 CPU响应中断过程 非屏蔽中断请求NMI CPU检测有NMI,不必判断IF标志,内 部自动产生中断类型号N=2,并转入相 应中断服务过程 软件(内部)中断INT n 由软件设定,不受IF标志影响,CPU内 部形成中断类型号N=n ,并转入相应中 断服务过程
完成当前指令 8086/8088中断响应过程 内部中断 NY Y NMI NH KINTR IF=1 响应中断 读中断号 N N 标志入栈 <TF=1 NI TEMP=TF 执行下一条 指令 清IF和TF CS和IP入栈 调用中断服 务程序 Y NMI 执行不可屏 蔽中断 N Y <TEMP-D 执行单步中 断 N 执行中断用 户服务程序 弹出CS和P 弹出标志 返回
8086/8088中断响应过程
中断向量表 ● 中断向量表 也称中断服务程序入口地址表 中断向量表安排在内存的前KB,即 00000H~003FFH 每个服务程序入口地址CS:P占用4个字 节(256*4=1KB),高字节存放段地址 CS,低字节存放段内偏移P,按中断类 型号顺序存放 19/66
19/66 中断向量表 中断向量表 也称中断服务程序入口地址表 中断向量表安排在内存的前1KB,即 00000H~003FFH 每个服务程序入口地址CS:IP占用4个字 节(256*4=1KB),高字节存放段地址 CS,低字节存放段内偏移IP,按中断类 型号顺序存放
3FFH 类型255中断入口 8086/8088中断向量表 用户用 3FCH 4 ■256种中断类型的分配 类型32中断入口 个 080H ”0~4为专用中断 类型31中断入口 系统用22个 O7CH 5~31为系统使用中断 ☐08H~0FH:8259A中断 类型5中断入口 向量 014H 类型4中断入口 ▣10H~1FH:BIOS中断 (溢出中断) 010H 类型3中断入口 向量 (断点中断) O0CH 专用中断5个 %32~255由用户定义中断 类型2中断入口 (NMI) ☐20H~3FH: 008 DOS中断 类型1中断入口 调用 (单步中断) 004H 类型0中断入口 CS ☐40H~FFH:用户使用 (除法出错) 000H IP
8086/8088 8086/8088中断向量表 专 用 中 断 5 个 系 统 用 27 个 用 户 用 224 个 256种中断类型的分配 0 ~ 4 为专用中断 5 ~31 为系统使用中断 □ 08H ~0FH:8259A中断 向量 □ 10H ~1FH:BIOS中断 向量 32 ~255 由用户定义中断 □ 20H ~3FH:DOS中断 调用 □ 40H ~FFH:用户使用