第八章输入输出程序设计优秀PPT.ppt





《第八章输入输出程序设计优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第八章输入输出程序设计优秀PPT.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章输入输出程序设第八章输入输出程序设计计第一页,本课件共有59页本章内容提要本章内容提要 I/OI/O设备的数据传送方式设备的数据传送方式程序直接控制程序直接控制I/OI/O方式方式中断传送方式中断传送方式第二页,本课件共有59页8.1 I/O8.1 I/O设备的数据传动方式设备的数据传动方式 1 1CPUCPU与外设与外设2 2直接存储器存取(直接存储器存取(DMADMA)方式)方式第三页,本课件共有59页8.1.1 CPU8.1.1 CPU与外设与外设 与与CPUCPU进行数据交换的,除了存储器外,还有输入输出设备(统称为进行数据交换的,除了存储器外,还有输入输出设备(统称为外设)。外
2、设)。输入输入ININ和输出和输出OUTOUT指令,可以从外设读取数据和向外设提供数指令,可以从外设读取数据和向外设提供数据。据。由于外设种类繁多,其工作原理、数据格式、操作时序等各异,由于外设种类繁多,其工作原理、数据格式、操作时序等各异,所以在处理器与外设之间还有一个协调两者数据传送的逻辑电路,所以在处理器与外设之间还有一个协调两者数据传送的逻辑电路,称为称为输入输出(输入输出(I/OI/O)接口电路。)接口电路。处理器并不直接操纵外设,而是通过处理器并不直接操纵外设,而是通过I/OI/O接口来控制外设。接口来控制外设。第四页,本课件共有59页I/OI/O接口电路中的寄存器接口电路中的寄存
3、器I/OI/O接口电路呈现给程序员的,是各种可编程寄存器。接口电路呈现给程序员的,是各种可编程寄存器。这些寄存器可以分成三类:这些寄存器可以分成三类:数据寄存器数据寄存器它保存和处理与外设间交换的数据;它保存和处理与外设间交换的数据;控制寄存器控制寄存器处理器通过它对外设进行控制,也称处理器通过它对外设进行控制,也称命命令寄存器;令寄存器;状态寄存器状态寄存器外设的当前工作状态通过它向处理器提外设的当前工作状态通过它向处理器提供。供。在涉及外设操作的输入输出程序中,各种寄存器以在涉及外设操作的输入输出程序中,各种寄存器以I/OI/O地址(端口)地址(端口)体现;对应三类寄存器分别称为:体现;对
4、应三类寄存器分别称为:数据端口、控制端口、状态端口。数据端口、控制端口、状态端口。第五页,本课件共有59页CPUCPU与外设数据传送方式与外设数据传送方式程序直接控制传送方式程序直接控制传送方式程序查询程序查询I/OI/O方式方式中断传送方式中断传送方式直接存储器存取(直接存储器存取(DMADMA)方式)方式第六页,本课件共有59页8.1.2 8.1.2 直接存储器存取(直接存储器存取(DMADMA)方式)方式主要由硬件主要由硬件DMADMA控制器实现其传送功能。控制器实现其传送功能。DMADMA(direct memory accessdirect memory access)方式,也称为成
5、组数据传送方式。)方式,也称为成组数据传送方式。主要用于一些高速的主要用于一些高速的I/OI/O设备。如磁带、磁盘、设备。如磁带、磁盘、A/DA/D等设备。等设备。传送数据时,每个字节一到达端口,就直接从接口送到存储器;同样,传送数据时,每个字节一到达端口,就直接从接口送到存储器;同样,接口和它的接口和它的DMADMA控制器也能直接从存储器取出字节并把它送到控制器也能直接从存储器取出字节并把它送到I/OI/O设备去。设备去。第七页,本课件共有59页DMADMA工作原理工作原理DMADMA控制器(控制器(intel 8237Aintel 8237A)一般包括四个寄存器:)一般包括四个寄存器:控制
6、寄存器控制寄存器状态寄存器状态寄存器地址寄存器地址寄存器字节计数器字节计数器在信息传送前,应初始化这些寄存器。在信息传送前,应初始化这些寄存器。地址寄存器地址寄存器要传送的数据块首地址;要传送的数据块首地址;字节寄存器字节寄存器要传送的数据长度(字节数);要传送的数据长度(字节数);状态寄存器状态寄存器控制字,指出数据是输入还是输出,并启动控制字,指出数据是输入还是输出,并启动DMADMA操操作。作。每个字节传送后,地址寄存器加每个字节传送后,地址寄存器加1 1,字节计数器减,字节计数器减1 1。第八页,本课件共有59页DMADMA传送步骤传送步骤由系统完成以下步骤:由系统完成以下步骤:DMA
7、DMA控制器向控制器向CPUCPU发出发出HOLDHOLD信号,请求使用总线。信号,请求使用总线。CPUCPU发出响应信号发出响应信号HOLDHOLD给给DMADMA控制器,并将总线让出,这时控制器,并将总线让出,这时CPUCPU放弃了放弃了对总线的控制,而对总线的控制,而DMADMA控制器获得了总线控制权。控制器获得了总线控制权。传输数据的存储器地址(在地址寄存器中)通过总线发出。传输数据的存储器地址(在地址寄存器中)通过总线发出。传输的字节数通过数据总线进行传送。传输的字节数通过数据总线进行传送。地址寄存器加地址寄存器加1 1,以指向下一个要传送的字节。,以指向下一个要传送的字节。字节计数
8、器减字节计数器减1 1。如字节计数器非如字节计数器非0 0,转向第,转向第3 3步。步。否则,否则,DMADMA控制器撤销总线请求信号控制器撤销总线请求信号HOLDHOLD,传送结束,传送结束第九页,本课件共有59页8.2 8.2 程序直接控制程序直接控制I/OI/O方式方式 1 1I/O端口端口2 2I/O指令指令3 3I/O程序举例程序举例第十页,本课件共有59页8.2.1 I/O8.2.1 I/O端口端口 80 x86 80 x86中,中,I/OI/O端口独立编址,允许设置端口独立编址,允许设置64K64K(6553565535)个)个8 8位端口,或位端口,或32K32K(327683
9、2768)个)个1616位端口。位端口。CPUCPU和内存通过和内存通过I/OI/O端口与外设进行通信。端口与外设进行通信。表表8.18.1列出了部分端口地址(十六进制)。列出了部分端口地址(十六进制)。第十一页,本课件共有59页8.2.2 I/O8.2.2 I/O指令指令 IN/OUT IN/OUT指令,即可传送字节又可传送字,使用的寄存器必须是指令,即可传送字节又可传送字,使用的寄存器必须是ALAL或或AXAX。直接寻址:寻址直接寻址:寻址0 0255255号端口。号端口。间接寻址:所有端口,使用间接寻址:所有端口,使用DXDX寄存器。寄存器。ININAX,28HAX,28HMOVMOVD
10、ATA_WORD,AXDATA_WORD,AXININAL,27HAL,27HTESTTESTAL,00000100HAL,00000100HJNZJNZERRORERRORMOVMOVDX,126HDX,126HININAL,DXAL,DX;端口端口126H126HORORAL,80HAL,80H;第第7 7位控制成组数据传送位控制成组数据传送OUTOUTDX,ALDX,AL第十二页,本课件共有59页8.2.3 I/O8.2.3 I/O程序举例程序举例例例8.1 8.1 发声子程序发声子程序SOUNDSOUND例例8.28.2查询方式查询方式打印字符程序打印字符程序PRT_CHARPRT_C
11、HAR例例8.38.3查询方式查询方式控制数据输入控制数据输入第十三页,本课件共有59页8.3 8.3 中断传送方式中断传送方式 1 18086的中断分类的中断分类2 2中断向量表中断向量表3 3中断过程中断过程4 4中断优先级和中断嵌套中断优先级和中断嵌套5 5中断处理过程中断处理过程第十四页,本课件共有59页中断的相关概念中断的相关概念 中断是中断是CPUCPU和外设进行数据传送的有效办法。它可以避免因反复查询外设和外设进行数据传送的有效办法。它可以避免因反复查询外设状态而浪费的时间,从而提高状态而浪费的时间,从而提高CPUCPU的效率。的效率。中断是一种使中断是一种使CPUCPU中止正在
12、执行的程序而转去处理特殊事件的中止正在执行的程序而转去处理特殊事件的操作。操作。中断源中断源引起中断的事件。引起中断的事件。外部中断(硬件中断)外部中断(硬件中断)由外设控制器或协处理器引起的中断。由外设控制器或协处理器引起的中断。内部中断(软件中断)内部中断(软件中断)由程序中安排的中断指令由程序中安排的中断指令INTINT产生的产生的中断,或由中断,或由CPUCPU的某些错误结果产生的中断。的某些错误结果产生的中断。8080/80888080/8088的中断源的中断源如图如图8.38.3所示。所示。第十五页,本课件共有59页8.3.1 80868.3.1 8086的中断分类的中断分类 软件
13、中断软件中断硬件中断硬件中断第十六页,本课件共有59页1.1.软件中断软件中断 软件中断又称内中断。软件中断又称内中断。它通常由三种情况引起:它通常由三种情况引起:由中断指令由中断指令INTINT引起;引起;由于由于CPUCPU的某些错误引起的某些错误引起;为调试程序(为调试程序(DEBUGDEBUG)设置的中断。)设置的中断。第十七页,本课件共有59页(1 1)中断指令)中断指令INTINT引起的内中断引起的内中断 CPU CPU执行完一条执行完一条INT nINT n指令后,会立即产生中断,并调用系统中相应的中断指令后,会立即产生中断,并调用系统中相应的中断处理程序来完成中断功能,处理程序
14、来完成中断功能,n n指出中断类型号。指出中断类型号。INTINT指令可以指定指令可以指定0 00FFH0FFH中的任何类型号。中的任何类型号。除系统占用的类型号之外,用户还可利用为用户保留的类型号扩充新除系统占用的类型号之外,用户还可利用为用户保留的类型号扩充新的中断处理功能。的中断处理功能。INT n INT n、INTOINTO、除法错中断都不能被禁止,而且比任何外部中断的优先、除法错中断都不能被禁止,而且比任何外部中断的优先级都高。级都高。第十八页,本课件共有59页(2 2)处理)处理CPUCPU某种错误的中断某种错误的中断除法错中断:除法错中断:INT 0INT 0 在执行除法时,如
15、果除数为在执行除法时,如果除数为0 0或商超过了寄存器所能表达的范围,或商超过了寄存器所能表达的范围,则产生一个类型为则产生一个类型为0 0的中断。的中断。溢出中断:溢出中断:INTOINTO中断类型号为中断类型号为4 4 若溢出标志若溢出标志OF=1OF=1,则产生溢出中断;否则,不产生中断,则产生溢出中断;否则,不产生中断,CPUCPU继续运行原程序。继续运行原程序。该中断的处理程序,主要是打印出一个错误信息,在处理结该中断的处理程序,主要是打印出一个错误信息,在处理结束后,不返回原程序继续执行,而是把控制权交给操作系统。束后,不返回原程序继续执行,而是把控制权交给操作系统。如:如:ADD
16、ADDAX,VALUEAX,VALUEINTOINTO;测试加法溢出测试加法溢出第十九页,本课件共有59页(3 3)为调试程序()为调试程序(DEBUGDEBUG)设置的中断)设置的中断 单步中断:为寻找程序中的问题,进行单步工作(一次只执行一条指令)单步中断:为寻找程序中的问题,进行单步工作(一次只执行一条指令)。类型号为。类型号为1 1。当单步标志位当单步标志位TFTF1 1时,每条指令执行后,时,每条指令执行后,CPUCPU会自动产生单会自动产生单步中断。步中断。使用单步中断可以逐条指令地跟踪程序的流程,观察使用单步中断可以逐条指令地跟踪程序的流程,观察CPUCPU每每执行一条指令后,各
17、个寄存器及有关存储单元的变化,从而指出执行一条指令后,各个寄存器及有关存储单元的变化,从而指出和确定产生错误的原因。和确定产生错误的原因。断点中断:将程序分段,为每段设置一个断点。中断类型号为断点中断:将程序分段,为每段设置一个断点。中断类型号为3 3。当当CPUCPU执行到断点时便产生中断,可以检查各寄存器及有关存储单元执行到断点时便产生中断,可以检查各寄存器及有关存储单元的内容。的内容。断点可以设置在程序的任何的地方。断点可以设置在程序的任何的地方。第二十页,本课件共有59页2.2.硬件中断硬件中断硬件中断又称外中断。硬件中断又称外中断。硬件中断主要有两种来源:硬件中断主要有两种来源:非屏
18、蔽中断(非屏蔽中断(NMINMI)为电源错、内存或为电源错、内存或I/OI/O总线的奇偶总线的奇偶等异常事件的中断保留的。中断类型号为等异常事件的中断保留的。中断类型号为2 2。可屏蔽中断可屏蔽中断来自各种外设的中断。由外设的请求引起的中断。来自各种外设的中断。由外设的请求引起的中断。可屏蔽中断受中断标志可屏蔽中断受中断标志IFIF控制;控制;非屏蔽中断和非屏蔽中断和IFIF位无关。位无关。第二十一页,本课件共有59页可屏蔽中断可屏蔽中断 从外设发出中断请求到从外设发出中断请求到CPUCPU响应中断,有两个控制条件起决定性作用:响应中断,有两个控制条件起决定性作用:该外设的中断请求是否屏蔽该外
19、设的中断请求是否屏蔽由中断屏蔽寄存器由中断屏蔽寄存器(IMRIMR)控)控制。制。CPUCPU是否允许响应中断是否允许响应中断由标志寄存器(由标志寄存器(FLAGSFLAGS)中的)中的中断允许位中断允许位IFIF控制。控制。第二十二页,本课件共有59页中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器的端口地址是中断屏蔽寄存器的端口地址是21H21H,如图,如图8.48.4所示。所示。中断屏蔽寄存器可分别控制某个可屏蔽中断源。中断屏蔽寄存器可分别控制某个可屏蔽中断源。在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以确定允
20、许用中断方式工作的外部设备。确定允许用中断方式工作的外部设备。;系统重设键盘中断系统重设键盘中断ININAL,21HAL,21HMOVMOVAL,11111101BAL,11111101BOUTOUT21H,AL21H,AL第二十三页,本课件共有59页控制控制CPUCPU的中断允许标志的中断允许标志IFIFCPUCPU是否响应中断还与中断允许标志是否响应中断还与中断允许标志IFIF有关。有关。IF=0IF=0,CPUCPU禁止响应任何外设的中断(关中断);禁止响应任何外设的中断(关中断);IF=1IF=1,允许,允许CPUCPU响应外设的中断请求(开中断)。响应外设的中断请求(开中断)。中断允
21、许标志中断允许标志IFIF是控制所有可屏蔽中断的。是控制所有可屏蔽中断的。当任何类型的中断发生时,当前的当任何类型的中断发生时,当前的FLAGSFLAGS要入栈保存,然后清除要入栈保存,然后清除IFIF位,进入位,进入中断处理程序,如果允许在一个中断处理程序的执行过程中发生硬中断,则必须中断处理程序,如果允许在一个中断处理程序的执行过程中发生硬中断,则必须用一条用一条STISTI指令开中断。指令开中断。当中断返回时,恢复了原当中断返回时,恢复了原FLAGSFLAGS的值,其中的值,其中IF=1IF=1,则允许硬中断再,则允许硬中断再次发生。次发生。STISTI设置中断允许位(设置中断允许位(I
22、F=1IF=1)CLICLI清除中断允许位(清除中断允许位(IF=0IF=0)第二十四页,本课件共有59页中断命令寄存器中断命令寄存器 在一次中断处理结束之前,还应给在一次中断处理结束之前,还应给8259A8259A的可编程中断控制器的中断命令寄存的可编程中断控制器的中断命令寄存器发出中断结束命令(器发出中断结束命令(EOIEOI:end of interruptend of interrupt),否则以后将屏蔽掉对同级中断),否则以后将屏蔽掉对同级中断或低级中断的处理。或低级中断的处理。中断命令寄存器的中断命令寄存器的I/OI/O端口地址为端口地址为20H20H(如图(如图8.48.4所示)
23、。所示)。在中断处理过程中,也可利用在中断处理过程中,也可利用EOIEOI命令清除当前中断请求,以响应同级命令清除当前中断请求,以响应同级或低级中断。或低级中断。;结束硬件中断结束硬件中断MOVMOVAL,20HAL,20HOUTOUT20H,AL20H,AL第二十五页,本课件共有59页8.3.2 8.3.2 中断向量表中断向量表每个中断都有一个中断类型号。每个中断都有一个中断类型号。80 x8680 x86可处理可处理256256种类型的中断,类型号为种类型的中断,类型号为0 00FFH0FFH。中断向量表就是各类型中断处理程序的入口地址表。中断向量表就是各类型中断处理程序的入口地址表。存储
24、器的最低存储器的最低1.5KB1.5KB,从,从000000005FFH5FFH为系统占用,其中,最低的为系统占用,其中,最低的1KB1KB,从从00000000003FFH003FFH存放中断向量表。存放中断向量表。256256个中断向量,每个中断向量占个中断向量,每个中断向量占4 4个字节。个字节。每类中断向量的地址中断类型号每类中断向量的地址中断类型号44。图图8.58.5给出了中断向量表给出了中断向量表。表表8.28.2给出了中断向量表地址分配给出了中断向量表地址分配。图图8.68.6展示展示了了中断操作步骤。中断操作步骤。第二十六页,本课件共有59页中断操作步骤中断操作步骤中断操作步
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 输入输出 程序设计 优秀 PPT

限制150内