170 likes | 328 Views
第 9 章 输入输出系统及中断的使用方法. 本章重点: 掌握接口的基本功能和输入/输出指令。掌握 CPU 寻址外设的方式、外设端口的编址方式、 CPU 与外设间传送信息的种类。掌握程序控制传送方式、中断传送方式,了解 DMA 方式的特点。 重点掌握如何用汇编编写一些功能程序。另外在理解中断的相关概念基础上进一步掌握中断服务程序的设计等。. 9.1 输入输出接口概述. 1. I/O 接口的一般结构及编址方式 接口是一组电路,是中央处理器与存储器、输入输出设备等外设之间协调动作的控制电路。. 9.1 输入输出接口概述. 2 . I/O 设备接口的编址方式
E N D
第9章 输入输出系统及中断的使用方法 • 本章重点: • 掌握接口的基本功能和输入/输出指令。掌握CPU寻址外设的方式、外设端口的编址方式、CPU与外设间传送信息的种类。掌握程序控制传送方式、中断传送方式,了解DMA方式的特点。 • 重点掌握如何用汇编编写一些功能程序。另外在理解中断的相关概念基础上进一步掌握中断服务程序的设计等。
9.1 输入输出接口概述 • 1. I/O接口的一般结构及编址方式 • 接口是一组电路,是中央处理器与存储器、输入输出设备等外设之间协调动作的控制电路。
9.1 输入输出接口概述 • 2.I/O设备接口的编址方式 • 设备接口表现为一组寄存器,具有确定的地址码(即I/O端口地址)。主机通过端口寻址寄存器连接设备,其中数据寄存器提供传输数据的存储缓冲,状态寄存器记录设备工作状态,而控制寄存器决定设备工作方式。 • 80x86系列采用独立编址方式,具有64KB个8位端口,其中系统标准设备已占用部分端口。下面列出PC机部分I/O端口的地址。 • 00H~0FH:DMA控制器的端口地址。 • 20H~21H:可编程中断控制器PIC端口地址,其中ICR为20H,IMR为21H。 • 40H~43H:时钟/定时器的端口地址。
60H~6FH:键盘控制器端口地址,60H为键盘输入端口寄存器的地址。60H~6FH:键盘控制器端口地址,60H为键盘输入端口寄存器的地址。 • 61H:设备控制寄存器的端口地址。 • 70H~71H:CMOS RAM端口地址 • 378H~37AH:LPT1并行打印机端口地址,数据、状态和控制端口地址依次为378H、379H、37AH • 3F8H~3FFH:COM1端口地址,其中数据寄存器的端口地址为3F8H、状态寄存器为3FDH。 • 2F8H~2FFH:COM2端口地址。 • 可见,00H~FFH用于微机主板上的I/O设备端口,100H~4FFH用于扩展插件上的设备端口,500~FFFFH为I/O扩展区,供用户使用。当设备端口分配存在冲突时,系统将无法正常运行。
9.1 输入输出接口概述 • 9.1.2 CPU与外设间的数据传送方式 • 1.无条件传送方式 • 无条件传送方式也叫直接程序控制输入输出。它不需要查询外设状态,直接使用I/O指令与外设实现同步数据交换。采用这种控制方式的接口电路和控制程序都比较简单。它一般应用在工作速度慢,接口电路较简单的外设,如扬声器,LED显示器、开关、继电器等。适合采用这种方式。
9.1 输入输出接口概述 • 2.程序查询传送方式 • 程序查询控制是指CPU通过程序不断地查询外部设备的工作状态,看其是否为“准备好”状态,只有在外部设备已“准备好”的状态下,微处理器才对指定端口进行输入/输出操作,否则微处理器继续查询等待。它是利用程序来不断地测试外设的状态,根据状态决定是否实现输入输出操作的信息传送方式。例如对于打印机,就可以采用此方式。CPU查询打印机是否处于就绪(Ready)状态,如果就绪,将要打印的字符首先提供给数据端口。然后查询状态端口,如果打印机能接收数据,则利用控制端口将数据提供给打印机。下面的程序代码就是常用的查询方式。
9.1 输入输出接口概述 • 3.中断传送方式 • 当CPU需要与外设交换数据时,执行一条指令去完成外设工作,然后继续执行自己的程序,这就是中断传送方式。输入时若外设的输入数据已送入数据寄存器,在输出时若外设已把一个数据输出,则由外设向CPU发出中断请求。当CPU响应中断时,就暂停正在执行的程序(即实现中断),转去执行输入或输出操作(中断服务)。一次数据传送完成后,返回到刚才暂停处(断点地址),CPU继续执行原来程序。
9.1 输入输出接口概述 • 中断控制方式的处理过程如下: • ① 在中断控制方式下,外部设备具有申请微处理器服务的主动权。当输入设备“准备好”输入的数据或输出设备“准备好”接收微处理器数据时,可以向微处理器发出中断请求,触发中断请求信号线INTR。 • ② 中断控制器具有中断判优的功能,当输入中断请求信号具有较高的优先级时,会立即向微处理器发出中断请求。 • ③ 当中断标志位IF=1(开中断)时,执行完当前一条指令后,微处理器响应外部设备的中断请求。由中断控制器将相应的中断矢量码n送微处理器,微处理器根据中断矢量码从中断矢量表取得中断服务程序的入口地址,转相应的中断服务程序。 • ④ 执行中断服务程序,微处理器与外部设备交换数据后,中断返回。
9.1 输入输出接口概述 • 4.直接存储器存取方式 • 程序查询方式和中断方式都是解决CPU和I/O设备间的信息交换,其共同特点是实现CPU寄存器与I/O端口间数据交换,且I/O操作都是由软件(I/O指令)完成,而DMA方式下CPU不参与工作,在硬件DMAC控制下完成外设与存储器间的直接传输数据的一种方式。直接存储器存取(DMA)是利用专门的硬件电路DMAC(DMA控制器8237)让外设接口可直接与内存进行高速数据传送,而不必经过CPU。DMA方式适合于大批量数据的传输,但硬件开销量较大。 • 采用DMA方式时,如外设需要进行数据传输,首先向DMA控制器发出DMA请求,DMA控制器再向CPU发出总线请求,要求使用系统总线。CPU响应DMA控制器的总线请求并把总线控制权交给DMA控制器,然后在DMA控制器的控制下开始利用系统总线进行数据传输。数据传输结束后,DMA控制器自动交出总线控制权。整个数据传输过程与CPU无关。这样,数据传输速度基本上取决于外设和存储器的速度。
9.2 中断处理技术 • 9.2.1 中断的概念 • 1.中断的基本概念 • 中断是指正常执行的程序被某种临时发生的事件所打断,当前程序暂时中止,处理器转去处理所发生的事件,处理完毕后再返回继续执行暂时中止的程序。就是说,在当前程序中插进了一段别的程序——中断服务程序或中断处理程序。CPU执行的现行程序被中断时的后继指令(下一条指令)的地址称为断点地址。中断时,CPU执行程序过程中所处的状态称为现场。
9.2 中断处理技术 • 2.中断的响应过程 • 对于可屏蔽中断,当CPU检测到有中断请求时,如果满足响应条件就要予以响应,具体过程如下: • ① 关中断,保护断点。这一步为隐操作。 • ② 保护现场。在中断服务程序中可能要用到某些寄存器,而这些寄存器也许在主程序被打断时存放着有用的内容,为了不破坏主程序在断点处的状态,应将这些寄存器的内容进压栈保护,这称为现场保护。 • ③ 开中断。由于CPU响应中断时自动关闭了中断,如果不用指令打开中断,CPU就不再响应可屏蔽的中断,这样就可能把更高级别的中断请求屏蔽掉,返回断点后CPU也就不能响应其他的可屏蔽中断。为此,要根据中断系统的实际情况,在中断服务程序的适当位置打开中断。 • ④ 具体中断处理。这是中断服务程序的主体。 • ⑤ 关中断。为安全起见,在保护现场和恢复现场时都应关中断。防止这时响应更高级别的中断。 • ⑥ 恢复现场。用一系列出栈指令,使保护现场时被保护的那些寄存器内容还原。 • ⑦ 开中断、中断返回。因为恢复现场是在关中断状态下进行的,为了使返回断点后CPU能响应可屏蔽中断,必须开中断。同时,由返回指令(IRET)弹出断点地址,从而返回断点处继续执行被打断了的程序。
9.2 中断处理技术 • 1.硬件中断 • 硬件中断也称外部中断,是指通过外部的硬件产生的中断。如打印机、硬盘等。硬件中断可分为可屏蔽中断(INTR)和不可屏蔽中断(NMI)。 • 2.软件中断 • 软件中断也称内部中断,即由中断指令引起的中断,它与硬件电路无关,也不受IF位控制。常见的有以下几种。如除数为0,或用执行软中断指令INT n后,产生中断,调用系统内相应的中断服务程序。溢出中断由INT 0指令引起,断点中断由INT 3指令引起。中断类型由指令中的n指定,n称为中断号,其范围是0~255
9.2 中断处理技术 • 3.中断向量表是中断类型号n与对应的中断服务处理程序之间的连接表,它提供了各个中断类型号n对应的中断服务程序的入口地址。当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。在IBM-PC16位机中,中断向量表占用主存至少1KB的地址空间,地址范围是00000H~003FFH。在中断向量表中内容分为256项,分别对应256个中断类型号0~255。每一项占用四个字节,用来存放中断处理程序的入口地址。高、低字单元分别用来存放中断处理程序入口地址所在段的段地址和偏移地址。
9.2 中断处理技术 • 4.中断处理过程 • 由于各中断服务处理程序的段地址和偏移地址在中断向量表中按中断类型好依次存放,其入口地址由中断类型号乘以4得到。 • 当中断发生时,系统自动完成下列动作: • ① 取中断类型号n 图9-4 • ② 标志寄存器(PSW)内容压入堆栈 • ③ 当前CS内容入栈,IP内容入栈 • ④ 禁止硬件中断和单步中断(IF=0,TF=0) • ⑤ 从中断向量表中取4×n的字内容送IP,取4×n+2的字内容送CS • ⑥ 转入中断服务子程序去执行 • 中断服务程序中通常有IRET指令,当执行该指令时,它的功能是从堆栈中弹出中断断点地址,分别送入IP和CS,然后恢复标志寄存器的内容。所以,在执行了IRET指令以后,便返回到被中断的主程序,继续原有程序的执行。
[例9.2.2]:设计一个中断服务程序。在60H~67H号中断是保留给用户使用的,现要求编程设置其功能指令“INT 60H”的功能是输出字符“K”。 分析:驻留程序通常使用TINY内存模式,程序应该尽量短。代码如下。 .MODEL TINY .CODE .STARTUP NEWINT60 PROC NEAR ;自定义新的中断60H服务程序 STI ;开中断 MOV AH,2 MOV DL,’K’ INT 2lH IRET NEWINT60 ENDP START PROC FAR ;为60H号中断设置新中断向量 LEA DX,MYINT MOV AX,SEGMYINT MOV DS,AX MOV AL,60H MOV AH,25H INT 21H MOV AH,31H MOV DX,15H ;其中10H节属于PSP INT 2lH START ENDP CODE ENDS END START 中断传送方式应用程序举例
习题-简答题 • 1.CPU和外设的数据传输方式有哪几种?在一个系统中,确定采用数据传输的方式的依据是什么? • 2.在一个系统中,有一I/O数据输入端口,如CPU采用MOV指令从该端口读入数据,说明该系统采用的是哪种I/O接口编址方式。 • 3.简述中断优先级? • 4.中断向量表的功能是什么?已知中断类型码分别是84H和FAH,它们的中断向量应放在中断向量表的什么位置? • 5.什么叫DMA传送方式?DMAC控制器的主要功能是什么?
习题-简答题 • 6.设状态端口地址为86H,数据端口地址为87H,外部输入信息准备好状态标志为D7=1.请用查询方式写出读入外部信息的程序段。 • 7.设状态端口地址为76H,数据端口地址为75H,外设是否准备好信息由D7位传送,D7=l为准备好,D7=0为未准备好(忙),请用查询方式写出CPU向外部传送数据的程序段。 • 8.简述8086CPU对中断的响应和处理过程。 • 9.8086可引入哪些中断,它们是如何引入的? • 10.中断入口地址表的功能是什么?已知中断类型码分别为84H和FAH,它们的中断入口在中断入口地址表的什么位置上?