第八章输入/输出和中断程序设计 1.教学目的:掌握IO程序设计,特别是实模式下的中断程序设计的方法 2.教学要求 ①掌握I/O端口与端口地址及I/O指令。 ②熟悉无条件传送、查询传送、中断传送和DMA传送的基本工作原理。 ③熟悉内部中断和外部中断,理解中断向量表的安排 ④掌握中断请求、中断判优、中断响应、中断处理和中断返回五个过程的 原理。 ⑤熟悉内部中断和外部中断,理解中断向量表的安排。 ⑥掌握中断处理程序的设计 ⑦掌握设置和获取中断向量的方法 ⑧熟悉BIOS中断调用概念和调用方法 ⑨熟悉DOS中断调用概念和调用方法 3.教学重点 ①中断传送和DMA传送 ②中断处理程序的设计 4.掌握难点 ①中断处理程序的设计 5.教学进程安排:P207~P246 6.教学方法 课堂讲授 7.教学内容摘要 8.1I/0设备的数据传送方式 8.1.1cPU与外设的数据传送方式 1.三类信息 (1)控制信息 (2)状态信息 (3)数据信息 2.I/0设备与主机之间进行数据交换方式: (1)程序直接控制方式 (2)程序中断方式
第八章 输入/输出和中断程序设计 1.教学目的:掌握 I/O 程序设计,特别是实模式下的中断程序设计的方法 2.教学要求: ①掌握 I/O 端口与端口地址及 I/O 指令。 ②熟悉无条件传送、查询传送、中断传送和 DMA 传送的基本工作原理。 ③熟悉内部中断和外部中断,理解中断向量表的安排。 ④掌握中断请求、中断判优、中断响应、中断处理和中断返回五个过程的 原理。 ⑤熟悉内部中断和外部中断,理解中断向量表的安排。 ⑥掌握中断处理程序的设计 ⑦掌握设置和获取中断向量的方法 ⑧熟悉 BIOS 中断调用概念和调用方法 ⑨熟悉 DOS 中断调用概念和调用方法 3.教学重点: ①中断传送和 DMA 传送 ②中断处理程序的设计 4.掌握难点: ①中断处理程序的设计 5.教学进程安排:P207~P246 6.教学方法: 课堂讲授 7.教学内容摘要 8.1 I/0 设备的数据传送方式 8.1.1 CPU 与外设的数据传送方式 1.三类信息 (1)控制信息 (2)状态信息 (3)数据信息 2.I/O 设备与主机之间进行数据交换方式: (1)程序直接控制方式 (2)程序中断方式
(3)直接存储器访问(DMA)方式 (4)通道传输方式(IOP 8.1.21/0端口与端口地址 I/0端口编址方法 1.I/0与内存单元统一编址 2.I/0独立编址。 8.1.3/0指令 AL, PORT (AL)←(PORT) IN AX, PORT (AX)+(PORT+1, PORT (AL)←((DX) IN (AX)←((DX)+1,(DX)) PORT, AL (PORT)←(AL) PORT, AX (PORT+1,PORT)←(AX) OUT ((DX)←(AL) ((DX)+1,(DX)←(AX) 8.1.4程序直接控制l/0方式 1.CPU与I/0设备之间的接口信息 2.工作过程 (1)查询输入工作过程 ①从状态端口读入状态信息。 ②测试 Ready位是否为1:若不为1则转①操作,循环等待:若为1则向下运行。 ③从数据端口读入数据到AX寄存器 (2)查询输出工作过程 ①从状态端口读入状态信息 ②检査BUSY位,若为1,则转①操作,循环等待:若为0则向下运行 ③从缓冲区取数据输出 3.应用实例 例8-1】编写两台计算机利用程序查询方式进行串口通信的程序 优缺点 8.1.5程序中断传送方式 1.中断传送方式的工作过程 当外设需要和CPU进行数据交换时,发出一个中断信号。CPU一条指令执行完成后扫 描一遍中断源。若有中断请求,转去执行与外设进行数据交换的中断服务程序。中断服务
(3)直接存储器访问(DMA)方式 (4)通道传输方式(IOP) 8.1.2 I/O 端口与端口地址 I/O 端口编址方法: 1.I/O 与内存单元统一编址 2.I/O 独立编址。 8.1.3 I/O 指令 IN AL,PORT ;(AL)←(PORT) IN AX,PORT ;(AX)←(PORT+1,PORT) IN AL,DX ;(AL)←((DX)) IN AX,DX ;(AX)←((DX)+1,(DX)) OUT PORT,AL ;(PORT)←(AL) OUT PORT,AX ;(PORT+1,PORT)←(AX) OUT DX,AL ;((DX))←(AL) OUT DX,AX ;((DX)+1,(DX))←(AX) 8.1.4 程序直接控制 I/O 方式 1. CPU 与 I/O 设备之间的接口信息 2. 工作过程 ⑴查询输入工作过程 ①从状态端口读入状态信息。 ②测试 Ready 位是否为 1:若不为 1 则转①操作,循环等待;若为 1 则向下运行。 ③从数据端口读入数据到 AX 寄存器。 ⑵查询输出工作过程 ①从状态端口读入状态信息。 ②检查 BUSY 位,若为 1,则转①操作,循环等待;若为 0 则向下运行。 ③从缓冲区取数据输出。 3. 应用实例 【例 8-1】编写两台计算机利用程序查询方式进行串口通信的程序。 4.优缺点 8.1.5 程序中断传送方式 1. 中断传送方式的工作过程 当外设需要和 CPU 进行数据交换时,发出一个中断信号。CPU 一条指令执行完成后扫 描一遍中断源。若有中断请求,转去执行与外设进行数据交换的中断服务程序。中断服务
程序处理完后,外设启动,CPU恢复中断现场,CPU与外设开始并行工作。利用中断方式 进行CPU和外设之间进行数据传送,减少了CPU的查询等待时间,提高了工作效率 地址 地址总线 译码器」AoA 数据锁存器 少去数据总线 缓冲器 输入数 据 装置 置中断允许 中断矢量 巨态缓冲器 >去数据总线 (中断响应信号) 图8.1中断传送方式接口电路 2.应用实例 例8-2】中断传送方式的打印机程序。设数据块首址为 DATA BUF,指针为 POINT。 8.1.6直接存储器访问(DMA)方式 1.DMA方式具有以下特点: (1)可在1/0设备与主存之间直接传送数据,以“周期窃取方式”暂停CPU对系统总 线的控制,占用时间很少。 (2)传送时,源与目的均直接由硬件逻辑指定。 (3)主存中需要开辟相应的的数据缓冲区,指定数据块长,计数由硬件完成。 (4)在一批数据传送结束后,一般通过中断方式通知CPU进行后处理 5)CP与I/0设备能在一定程度上并行工作,效率很高 (6)一般用于高速、批量数据的简单传送。 2.完整的DMA工作过程 (1)初始化 (2)DMA请求
程序处理完后,外设启动,CPU 恢复中断现场,CPU 与外设开始并行工作。利用中断方式 进行 CPU 和外设之间进行数据传送,减少了 CPU 的查询等待时间,提高了工作效率。 输入 装置 锁存器 D Q 三态 缓冲器 地址 译码器 装置中断允许 中断矢量 三态缓冲器 去数据总线 INTR 去数据总线 INTA (中断响应信号) 地址总线 A0~A7 数据 数 据 +5V IO / M RD 图 8.1 中断传送方式接口电路 2. 应用实例 【例 8-2】中断传送方式的打印机程序。设数据块首址为 DATA_BUF,指针为 POINT。 8.1.6 直接存储器访问(DMA)方式 1. DMA 方式具有以下特点: (1)可在 I/O 设备与主存之间直接传送数据,以“周期窃取方式”暂停 CPU 对系统总 线的控制,占用时间很少。 (2)传送时,源与目的均直接由硬件逻辑指定。 (3)主存中需要开辟相应的的数据缓冲区,指定数据块长,计数由硬件完成。 (4)在一批数据传送结束后,一般通过中断方式通知 CPU 进行后处理。 (5)CPU 与 I/O 设备能在一定程度上并行工作,效率很高。 (6)一般用于高速、批量数据的简单传送。 2. 完整的 DMA 工作过程 (1)初始化 (2)DMA 请求
(3)DMA响应 (4)DMA传送 (5)结束处理 3.DMA数据传送过程完整步骤 (1)DMA控制器向CPU发出HOLD信号,请求使用总线 (2)CPU发出响应信号HLDA给DMA控制器,并将总线让出,这时CP放弃了对总线的 控制,而DMA控制器获得了总线控制权 (3)传输数据的存储器地址(在地址寄存器中)通过地址总线发出 (4)传输的数据字节通过数据总线进行传送 (5)地址寄存器增1,以指向下一个要传送的字节 (6)字节计数器减1 (7)如字节计数器非0,转向第③步。 (8)否则,DMA控制器撤销总线请求信号HOLD,传送结束。 8.1.7通道传送方式(I0P) 1.通道Ⅰ/0数据传送是采用专用I/0处理机(IOP)来控制的 2.通道有自己的通道指令 3.IOP与DMA方式比较 8.2中断传送 8.2.1中断与中断源 1.中断 2.中断源 8.2.2中断分类 1.外部中断 2.内部中断 (1)由中断指令INT引起的中断 (2)处理CPU某些错误的中断 (3)调试程序( DEBUG)设置的中断 ①单步中断 ②断点中断 4.80386~ Pentium处理机异常中断 (1)失效 (2)陷阶
(3)DMA 响应 (4)DMA 传送 (5)结束处理 3. DMA 数据传送过程完整步骤 (1)DMA 控制器向 CPU 发出 HOLD 信号,请求使用总线。 (2)CPU 发出响应信号 HLDA 给 DMA 控制器,并将总线让出,这时 CPU 放弃了对总线的 控制,而 DMA 控制器获得了总线控制权。 (3)传输数据的存储器地址(在地址寄存器中)通过地址总线发出。 (4)传输的数据字节通过数据总线进行传送。 (5)地址寄存器增 1,以指向下一个要传送的字节。 (6)字节计数器减 1。 (7)如字节计数器非 0,转向第③步。 (8)否则,DMA 控制器撤销总线请求信号 HOLD,传送结束。 8.1.7 通道传送方式(IOP) 1.通道 I/O 数据传送是采用专用 I/O 处理机(IOP)来控制的 2.通道有自己的通道指令 3.IOP 与 DMA 方式比较 8.2 中断传送 8.2.1 中断与中断源 1.中断 2.中断源 8.2.2 中断分类 1. 外部中断 2. 内部中断 ⑴由中断指令 INT 引起的中断 ⑵处理 CPU 某些错误的中断 ⑶调试程序(DEBUG)设置的中断 ①单步中断 ②断点中断 4.80386~Pentium 处理机异常中断 (1)失效 (2)陷阶
(3)中止 8.23中断向量表 中断操作的5个步骤: 1.取中断类型号 2.计算中断向量地址 3.取中断向量,偏移地址送IP,段地址送CS 4.转入中断处理程序; 5.中断返回到INT指令的下一条指令。 类型0中断处理程序入口地址 00004 类型1中断处理程序入口地址 00008H 类型2中断处理程序入口地址 003FC 乍类型F中断处理程序入口 003FFH 图8.5中断向量表 8.24中断响应过程 中断发生时,中断硬件机构自动完成的动作 1.取中断类型号N 2.标志寄存器(PSW)内容压栈: 3.当前代码段寄存器(CS)内容压栈 4.当前指令指引(IP)内容压栈 5.禁止外部中断和单步中断(置IF=0,TF=0) 6.从中断向量表中取4*n的字内容送IP,取4n+2的字内客送 7.转中断处理程序 8.2.5中断优先级与中断嵌套 1.中断优先级 优先级从高到低的次序为: 优先级高 非屏蔽中断(NMI) 内部中断 可屏蔽中断(INTR) 优先级低 单步中断
(3)中止 8.2.3 中断向量表 中断操作的 5 个步骤: 1.取中断类型号; 2.计算中断向量地址; 3.取中断向量,偏移地址送 IP,段地址送 CS; 4.转入中断处理程序; 5.中断返回到 INT 指令的下一条指令。 类型 0 中断处理程序入口地址 类型 1 中断处理程序入口地址 类型 2 中断处理程序入口地址 类型 0FF 中断处理程序入口地址 00000H 00004H 00008H 0000CH 003FCH 003FFH 图 8.5 中断向量表 8.2.4 中断响应过程 中断发生时,中断硬件机构自动完成的动作: 1.取中断类型号 N; 2.标志寄存器(PSW)内容压栈; 3.当前代码段寄存器(CS)内容压栈; 4.当前指令指引(IP)内容压栈; 5.禁止外部中断和单步中断(置 IF=0,TF=0); 6.从中断向量表中取 4*n 的字内容送 IP,取 4*n+2 的字内客送 CS; 7.转中断处理程序。 8.2.5 中断优先级与中断嵌套 1. 中断优先级 优先级从高到低的次序为: 优先级高 非屏蔽中断(NMI) 内部中断 可屏蔽中断(INTR) 优先级低 单步中断