第八章输入输出程序设计PPT讲稿.ppt

上传人:石*** 文档编号:44698058 上传时间:2022-09-22 格式:PPT 页数:59 大小:3.25MB
返回 下载 相关 举报
第八章输入输出程序设计PPT讲稿.ppt_第1页
第1页 / 共59页
第八章输入输出程序设计PPT讲稿.ppt_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《第八章输入输出程序设计PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第八章输入输出程序设计PPT讲稿.ppt(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第八章输入输出程序设第八章输入输出程序设计计第1页,共59页,编辑于2022年,星期三本章内容提要本章内容提要 I/OI/O设备的数据传送方式设备的数据传送方式程序直接控制程序直接控制I/OI/O方式方式中断传送方式中断传送方式第2页,共59页,编辑于2022年,星期三8.1 I/O8.1 I/O设备的数据传动方式设备的数据传动方式 1 1CPUCPU与外设与外设2 2直接存储器存取(直接存储器存取(DMADMA)方式)方式第3页,共59页,编辑于2022年,星期三8.1.1 CPU8.1.1 CPU与外设与外设 与与CPUCPU进行数据交换的,除了存储器外,还有输入输出设备(统称为外进行数据

2、交换的,除了存储器外,还有输入输出设备(统称为外设)。设)。输入输入ININ和输出和输出OUTOUT指令,可以从外设读取数据和向外设提供数据。指令,可以从外设读取数据和向外设提供数据。由于外设种类繁多,其工作原理、数据格式、操作时序等各异,所以在处理由于外设种类繁多,其工作原理、数据格式、操作时序等各异,所以在处理器与外设之间还有一个协调两者数据传送的逻辑电路,称为器与外设之间还有一个协调两者数据传送的逻辑电路,称为输入输出(输入输出(I/OI/O)接口电路。接口电路。处理器并不直接操纵外设,而是通过处理器并不直接操纵外设,而是通过I/OI/O接口来控制外设。接口来控制外设。第4页,共59页,

3、编辑于2022年,星期三I/OI/O接口电路中的寄存器接口电路中的寄存器I/OI/O接口电路呈现给程序员的,是各种可编程寄存器。接口电路呈现给程序员的,是各种可编程寄存器。这些寄存器可以分成三类:这些寄存器可以分成三类:数据寄存器数据寄存器它保存和处理与外设间交换的数据;它保存和处理与外设间交换的数据;控制寄存器控制寄存器处理器通过它对外设进行控制,也称处理器通过它对外设进行控制,也称命令寄命令寄存器;存器;状态寄存器状态寄存器外设的当前工作状态通过它向处理器提供。外设的当前工作状态通过它向处理器提供。在涉及外设操作的输入输出程序中,各种寄存器以在涉及外设操作的输入输出程序中,各种寄存器以I/

4、OI/O地址(端口)体地址(端口)体现;对应三类寄存器分别称为:现;对应三类寄存器分别称为:数据端口、控制端口、状态端口。数据端口、控制端口、状态端口。第5页,共59页,编辑于2022年,星期三CPUCPU与外设数据传送方式与外设数据传送方式程序直接控制传送方式程序直接控制传送方式程序查询程序查询I/OI/O方式方式中断传送方式中断传送方式直接存储器存取(直接存储器存取(DMADMA)方式)方式第6页,共59页,编辑于2022年,星期三8.1.2 8.1.2 直接存储器存取(直接存储器存取(DMADMA)方式)方式主要由硬件主要由硬件DMADMA控制器实现其传送功能。控制器实现其传送功能。DM

5、ADMA(direct memory accessdirect memory access)方式,也称为成组数据传送方式。)方式,也称为成组数据传送方式。主要用于一些高速的主要用于一些高速的I/OI/O设备。如磁带、磁盘、设备。如磁带、磁盘、A/DA/D等设备。等设备。传送数据时,每个字节一到达端口,就直接从接口送到存储器;同样,接口和传送数据时,每个字节一到达端口,就直接从接口送到存储器;同样,接口和它的它的DMADMA控制器也能直接从存储器取出字节并把它送到控制器也能直接从存储器取出字节并把它送到I/OI/O设备去。设备去。第7页,共59页,编辑于2022年,星期三DMADMA工作原理工作

6、原理DMADMA控制器(控制器(intel 8237Aintel 8237A)一般包括四个寄存器:)一般包括四个寄存器:控制寄存器控制寄存器状态寄存器状态寄存器地址寄存器地址寄存器字节计数器字节计数器在信息传送前,应初始化这些寄存器。在信息传送前,应初始化这些寄存器。地址寄存器地址寄存器要传送的数据块首地址;要传送的数据块首地址;字节寄存器字节寄存器要传送的数据长度(字节数);要传送的数据长度(字节数);状态寄存器状态寄存器控制字,指出数据是输入还是输出,并启动控制字,指出数据是输入还是输出,并启动DMADMA操操作。作。每个字节传送后,地址寄存器加每个字节传送后,地址寄存器加1 1,字节计数

7、器减,字节计数器减1 1。第8页,共59页,编辑于2022年,星期三DMADMA传送步骤传送步骤由系统完成以下步骤:由系统完成以下步骤:DMADMA控制器向控制器向CPUCPU发出发出HOLDHOLD信号,请求使用总线。信号,请求使用总线。CPUCPU发出响应信号发出响应信号HOLDHOLD给给DMADMA控制器,并将总线让出,这时控制器,并将总线让出,这时CPUCPU放弃了对总线的控制,放弃了对总线的控制,而而DMADMA控制器获得了总线控制权。控制器获得了总线控制权。传输数据的存储器地址(在地址寄存器中)通过总线发出。传输数据的存储器地址(在地址寄存器中)通过总线发出。传输的字节数通过数据

8、总线进行传送。传输的字节数通过数据总线进行传送。地址寄存器加地址寄存器加1 1,以指向下一个要传送的字节。,以指向下一个要传送的字节。字节计数器减字节计数器减1 1。如字节计数器非如字节计数器非0 0,转向第,转向第3 3步。步。否则,否则,DMADMA控制器撤销总线请求信号控制器撤销总线请求信号HOLDHOLD,传送结束,传送结束第9页,共59页,编辑于2022年,星期三8.2 8.2 程序直接控制程序直接控制I/OI/O方式方式 1 1I/O端口端口2 2I/O指令指令3 3I/O程序举例程序举例第10页,共59页,编辑于2022年,星期三8.2.1 I/O8.2.1 I/O端口端口 80

9、 x86 80 x86中,中,I/OI/O端口独立编址,允许设置端口独立编址,允许设置64K64K(6553565535)个)个8 8位端口,或位端口,或32K32K(3276832768)个)个1616位端口。位端口。CPUCPU和内存通过和内存通过I/OI/O端口与外设进行通信。端口与外设进行通信。表表8.18.1列出了部分端口地址(十六进制)。列出了部分端口地址(十六进制)。第11页,共59页,编辑于2022年,星期三8.2.2 I/O8.2.2 I/O指令指令 IN/OUT IN/OUT指令,即可传送字节又可传送字,使用的寄存器必须是指令,即可传送字节又可传送字,使用的寄存器必须是AL

10、AL或或AXAX。直接寻址:寻址直接寻址:寻址0 0255255号端口。号端口。间接寻址:所有端口,使用间接寻址:所有端口,使用DXDX寄存器。寄存器。ININAX,28HAX,28HMOVMOVDATA_WORD,AXDATA_WORD,AXININAL,27HAL,27HTESTTESTAL,00000100HAL,00000100HJNZJNZERRORERRORMOVMOVDX,126HDX,126HININAL,DXAL,DX;端口端口126H126HORORAL,80HAL,80H;第第7 7位控制成组数据传送位控制成组数据传送OUTOUTDX,ALDX,AL第12页,共59页,编

11、辑于2022年,星期三8.2.3 I/O8.2.3 I/O程序举例程序举例例例8.1 8.1 发声子程序发声子程序SOUNDSOUND例例8.28.2查询方式查询方式打印字符程序打印字符程序PRT_CHARPRT_CHAR例例8.38.3查询方式查询方式控制数据输入控制数据输入第13页,共59页,编辑于2022年,星期三8.3 8.3 中断传送方式中断传送方式 1 18086的中断分类的中断分类2 2中断向量表中断向量表3 3中断过程中断过程4 4中断优先级和中断嵌套中断优先级和中断嵌套5 5中断处理过程中断处理过程第14页,共59页,编辑于2022年,星期三中断的相关概念中断的相关概念 中断

12、是中断是CPUCPU和外设进行数据传送的有效办法。它可以避免因反复查询外设和外设进行数据传送的有效办法。它可以避免因反复查询外设状态而浪费的时间,从而提高状态而浪费的时间,从而提高CPUCPU的效率。的效率。中断是一种使中断是一种使CPUCPU中止正在执行的程序而转去处理特殊事件的操作。中止正在执行的程序而转去处理特殊事件的操作。中断源中断源引起中断的事件。引起中断的事件。外部中断(硬件中断)外部中断(硬件中断)由外设控制器或协处理器引起的中断。由外设控制器或协处理器引起的中断。内部中断(软件中断)内部中断(软件中断)由程序中安排的中断指令由程序中安排的中断指令INTINT产生的中断,产生的中

13、断,或由或由CPUCPU的某些错误结果产生的中断。的某些错误结果产生的中断。8080/80888080/8088的中断源的中断源如图如图8.38.3所示所示。第15页,共59页,编辑于2022年,星期三8.3.1 80868.3.1 8086的中断分类的中断分类 软件中断软件中断硬件中断硬件中断第16页,共59页,编辑于2022年,星期三1.1.软件中断软件中断 软件中断又称内中断。软件中断又称内中断。它通常由三种情况引起:它通常由三种情况引起:由中断指令由中断指令INTINT引起引起;由于由于CPUCPU的某些错误引起的某些错误引起;为调试程序(为调试程序(DEBUGDEBUG)设置的中断)

14、设置的中断。第17页,共59页,编辑于2022年,星期三(1 1)中断指令)中断指令INTINT引起的内中断引起的内中断 CPU CPU执行完一条执行完一条INT nINT n指令后,会立即产生中断,并调用系统中相应的中断指令后,会立即产生中断,并调用系统中相应的中断处理程序来完成中断功能,处理程序来完成中断功能,n n指出中断类型号。指出中断类型号。INTINT指令可以指定指令可以指定0 00FFH0FFH中的任何类型号。中的任何类型号。除系统占用的类型号之外,用户还可利用为用户保留的类型号扩充新除系统占用的类型号之外,用户还可利用为用户保留的类型号扩充新的中断处理功能。的中断处理功能。IN

15、T n INT n、INTOINTO、除法错中断都不能被禁止,而且比任何外部中断的优、除法错中断都不能被禁止,而且比任何外部中断的优先级都高。先级都高。第18页,共59页,编辑于2022年,星期三(2 2)处理)处理CPUCPU某种错误的中断某种错误的中断除法错中断:除法错中断:INT 0INT 0 在执行除法时,如果除数为在执行除法时,如果除数为0 0或商超过了寄存器所能表达的范围,则产或商超过了寄存器所能表达的范围,则产生一个类型为生一个类型为0 0的中断。的中断。溢出中断:溢出中断:INTOINTO中断类型号为中断类型号为4 4 若溢出标志若溢出标志OF=1OF=1,则产生溢出中断;否则

16、,不产生中断,则产生溢出中断;否则,不产生中断,CPUCPU继继续运行原程序。续运行原程序。该中断的处理程序,主要是打印出一个错误信息,在处理结束该中断的处理程序,主要是打印出一个错误信息,在处理结束后,不返回原程序继续执行,而是把控制权交给操作系统。后,不返回原程序继续执行,而是把控制权交给操作系统。如:如:ADDADDAX,VALUEAX,VALUEINTOINTO;测试加法溢出测试加法溢出第19页,共59页,编辑于2022年,星期三(3 3)为调试程序()为调试程序(DEBUGDEBUG)设置的中断)设置的中断 单步中断:为寻找程序中的问题,进行单步工作(一次只执行一条指单步中断:为寻找

17、程序中的问题,进行单步工作(一次只执行一条指令)。类型号为令)。类型号为1 1。当单步标志位当单步标志位TFTF1 1时,每条指令执行后,时,每条指令执行后,CPUCPU会自动产生单步中断。会自动产生单步中断。使用单步中断可以逐条指令地跟踪程序的流程,观察使用单步中断可以逐条指令地跟踪程序的流程,观察CPUCPU每执行一条指每执行一条指令后,各个寄存器及有关存储单元的变化,从而指出和确定产生错误的原因。令后,各个寄存器及有关存储单元的变化,从而指出和确定产生错误的原因。断点中断:将程序分段,为每段设置一个断点。中断类型号为断点中断:将程序分段,为每段设置一个断点。中断类型号为3 3。当当CPU

18、CPU执行到断点时便产生中断,可以检查各寄存器及有关存储单元执行到断点时便产生中断,可以检查各寄存器及有关存储单元的内容。的内容。断点可以设置在程序的任何的地方。断点可以设置在程序的任何的地方。第20页,共59页,编辑于2022年,星期三2.2.硬件中断硬件中断硬件中断又称外中断。硬件中断又称外中断。硬件中断主要有两种来源:硬件中断主要有两种来源:非屏蔽中断(非屏蔽中断(NMINMI)为电源错、内存或为电源错、内存或I/OI/O总线的奇偶等异常事件的总线的奇偶等异常事件的中断保留的。中断类型号为中断保留的。中断类型号为2 2。可屏蔽中断可屏蔽中断来自各种外设的中断。由外设的请求引起的中来自各种

19、外设的中断。由外设的请求引起的中断。断。可屏蔽中断受中断标志可屏蔽中断受中断标志IFIF控制;控制;非屏蔽中断和非屏蔽中断和IFIF位无关。位无关。第21页,共59页,编辑于2022年,星期三可屏蔽中断可屏蔽中断 从外设发出中断请求到从外设发出中断请求到CPUCPU响应中断,有两个控制条件起决定性作用:响应中断,有两个控制条件起决定性作用:该外设的中断请求是否屏蔽该外设的中断请求是否屏蔽由由中断屏蔽寄存器中断屏蔽寄存器(IMRIMR)控制。)控制。CPUCPU是否允许响应中断是否允许响应中断由标志寄存器(由标志寄存器(FLAGSFLAGS)中的)中的中断允许位中断允许位IFIF控制。控制。第2

20、2页,共59页,编辑于2022年,星期三中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器的端口地址是中断屏蔽寄存器的端口地址是21H21H,如图,如图8.48.4所示。所示。中断屏蔽寄存器可分别控制某个可屏蔽中断源。中断屏蔽寄存器可分别控制某个可屏蔽中断源。在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以确定允许在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以确定允许用中断方式工作的外部设备。用中断方式工作的外部设备。;系统重设键盘中断系统重设键盘中断ININAL,21HAL,21HMOVMOVAL,11111101BAL,11111101BOUTOUT21H,AL2

21、1H,AL第23页,共59页,编辑于2022年,星期三控制控制CPUCPU的中断允许标志的中断允许标志IFIFCPUCPU是否响应中断还与中断允许标志是否响应中断还与中断允许标志IFIF有关。有关。IF=0IF=0,CPUCPU禁止响应任何外设的中断(关中断);禁止响应任何外设的中断(关中断);IF=1IF=1,允许,允许CPUCPU响应外设的中断请求(开中断)。响应外设的中断请求(开中断)。中断允许标志中断允许标志IFIF是控制所有可屏蔽中断的。是控制所有可屏蔽中断的。当任何类型的中断发生时,当前的当任何类型的中断发生时,当前的FLAGSFLAGS要入栈保存,然后清除要入栈保存,然后清除IF

22、IF位,进入中断处位,进入中断处理程序,如果允许在一个中断处理程序的执行过程中发生硬中断,则必须用一条理程序,如果允许在一个中断处理程序的执行过程中发生硬中断,则必须用一条STISTI指指令开中断。令开中断。当中断返回时,恢复了原当中断返回时,恢复了原FLAGSFLAGS的值,其中的值,其中IF=1IF=1,则允许硬中断再次发生。,则允许硬中断再次发生。STISTI设置中断允许位(设置中断允许位(IF=1IF=1)CLICLI清除中断允许位(清除中断允许位(IF=0IF=0)第24页,共59页,编辑于2022年,星期三中断命令寄存器中断命令寄存器 在一次中断处理结束之前,还应给在一次中断处理结

23、束之前,还应给8259A8259A的可编程中断控制器的中断命令寄存器发出的可编程中断控制器的中断命令寄存器发出中断结束命令(中断结束命令(EOIEOI:end of interruptend of interrupt),否则以后将屏蔽掉对同级中断或低级中断的),否则以后将屏蔽掉对同级中断或低级中断的处理。处理。中断命令寄存器的中断命令寄存器的I/OI/O端口地址为端口地址为20H20H(如图(如图8.48.4所示)。所示)。在中断处理过程中,也可利用在中断处理过程中,也可利用EOIEOI命令清除当前中断请求,以响应同级或低级中断。命令清除当前中断请求,以响应同级或低级中断。;结束硬件中断结束硬

24、件中断MOVMOVAL,20HAL,20HOUTOUT20H,AL20H,AL第25页,共59页,编辑于2022年,星期三8.3.2 8.3.2 中断向量表中断向量表每个中断都有一个中断类型号。每个中断都有一个中断类型号。80 x8680 x86可处理可处理256256种类型的中断,类型号为种类型的中断,类型号为0 00FFH0FFH。中断向量表就是各类型中断处理程序的入口地址表。中断向量表就是各类型中断处理程序的入口地址表。存储器的最低存储器的最低1.5KB1.5KB,从,从000000005FFH5FFH为系统占用,其中,最低的为系统占用,其中,最低的1KB1KB,从,从000000000

25、03FFH003FFH存放中断向量表。存放中断向量表。256256个中断向量,每个中断向量占个中断向量,每个中断向量占4 4个字节。个字节。每类中断向量的地址中断类型号每类中断向量的地址中断类型号44。图图8.58.5给出了中断向量表给出了中断向量表。表表8.28.2给出了中断向量表地址分配给出了中断向量表地址分配。图图8.68.6展示展示了中断操作步骤了中断操作步骤。第26页,共59页,编辑于2022年,星期三中断操作步骤中断操作步骤中断操作步骤:中断操作步骤:取中断类型号;取中断类型号;计算中断向量地址;计算中断向量地址;取中断向量,偏移地址送取中断向量,偏移地址送IPIP,段地址送,段地

26、址送DSDS;转入中断处理程序;转入中断处理程序;中断返回到中断返回到INTINT指令的下一条指令。指令的下一条指令。第27页,共59页,编辑于2022年,星期三为中断类型为中断类型N N设置中断向量设置中断向量MOVMOVAX,0AX,0MOVMOVES,AXES,AXMOVMOVBX,N*4BX,N*4MOVMOVAX,OFFSET INTHANDAX,OFFSET INTHANDMOVMOVES:WORD PTRBX,AXES:WORD PTRBX,AXMOVMOVAX,SEG INTHANDAX,SEG INTHANDMOVMOVES:WORD PTRBX+2,AXES:WORD PT

27、RBX+2,AXINTHAND:INTHAND:IRETIRET 用户可以利用保留的中断类型号扩充自己需要的中断功能,用户可以利用保留的中断类型号扩充自己需要的中断功能,对新增加的中断对新增加的中断功能要在中断类型表中建立相应的中断向量。功能要在中断类型表中建立相应的中断向量。第28页,共59页,编辑于2022年,星期三使用使用DOSDOS功能调用(功能调用(21H21H)存取中断向量)存取中断向量例例8.48.4使用使用DOSDOS功能调用存取中断向量功能调用存取中断向量第29页,共59页,编辑于2022年,星期三8.3.3 8.3.3 中断过程中断过程 当中断发生时,由中断机构自动完成下列

28、操作:当中断发生时,由中断机构自动完成下列操作:取中断类型号取中断类型号N N;标志寄存器(标志寄存器(FLAGSFLAGS)内容入栈;)内容入栈;当前代码段寄存器(当前代码段寄存器(CSCS)内容入栈;)内容入栈;当前指令指针寄存器(当前指令指针寄存器(IPIP)内容入栈;)内容入栈;禁止硬件中断和单步中断(禁止硬件中断和单步中断(IF=0,TF=0IF=0,TF=0););从中断向量表中取从中断向量表中取4N4N的字内容送的字内容送IPIP,取,取4N+24N+2的字内容送的字内容送CSCS;转中断处理程序。转中断处理程序。如图如图8.78.7的中断过程示意图的中断过程示意图。第30页,共

29、59页,编辑于2022年,星期三8.3.4 8.3.4 中断优先级和中断嵌套中断优先级和中断嵌套 80868086规定的中断优先级次序为:规定的中断优先级次序为:优先级优先级高高软件中断(除法错,软件中断(除法错,INTO INTO,INTINT)非屏蔽中断(非屏蔽中断(NMINMI)可屏蔽中断(可屏蔽中断(INTRINTR)低低单步中断单步中断 可屏蔽中断的优先权分为八级,正常情况下,优先级次序是:可屏蔽中断的优先权分为八级,正常情况下,优先级次序是:IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7定时器定时器打印机

30、打印机优先级高优先级高低低第31页,共59页,编辑于2022年,星期三8259A8259A的中断命令寄存器控制优先级的中断命令寄存器控制优先级 8259A 8259A的中断命令寄存器的第的中断命令寄存器的第6 6、7 7位控制各种中断请求的优先级次序。位控制各种中断请求的优先级次序。R RSLSL0 00 0正常优先级方式正常优先级方式0 01 1清除由清除由L2L2L0L0指定的中断请求指定的中断请求1 10 0各中断优先级依次左循环一个位置各中断优先级依次左循环一个位置1 11 1各中断优先级依次循环到由各中断优先级依次循环到由L2L2L0L0指定的中断指定的中断请求到达最低优先级位置上请

31、求到达最低优先级位置上;使优先级次序再左循环一个位置使优先级次序再左循环一个位置MOVMOVAL,10100000AL,10100000OUTOUT20H,AL20H,AL;IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5;IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5第32页,共59页,编辑于2022年,星期三中断嵌套中断嵌套 中断嵌套:正在运行的中断处理程序,又被其他中断源中断的情况。中断嵌套:正在运行的中断处理程序,又被其他中断源中断的情况。80 x86 80 x86没有规定中断嵌套的深度(中断程序又被中断的层次),实际受堆栈容量没有规定中断嵌套的深度(中断

32、程序又被中断的层次),实际受堆栈容量的限制。的限制。一个中断处理程序,在开中断的情况下,可以被优先级高于它的中断源中断。一个中断处理程序,在开中断的情况下,可以被优先级高于它的中断源中断。只有发出了只有发出了EOIEOI命令,清除正在执行的中断请求,才可以响应同级或低级的中断。命令,清除正在执行的中断请求,才可以响应同级或低级的中断。如图如图8.88.8所示所示:正常优先级方式下,优先级中断和中断嵌套发生时的处理过:正常优先级方式下,优先级中断和中断嵌套发生时的处理过程。程。第33页,共59页,编辑于2022年,星期三8.3.5 8.3.5 中断处理程序中断处理程序 主程序为响应中断所做的准备

33、工作以及硬件(包括主程序为响应中断所做的准备工作以及硬件(包括CPUCPU和外设接口)自动完成以下和外设接口)自动完成以下动作:动作:第34页,共59页,编辑于2022年,星期三中断响应的特殊情况中断响应的特殊情况 注意:设备发到注意:设备发到CPUCPU的中断请求信号在时间上是随机的,只要未被屏蔽的设备本身的中断请求信号在时间上是随机的,只要未被屏蔽的设备本身的状态是准备好或空闲的,它就会向的状态是准备好或空闲的,它就会向CPUCPU请求中断,如果此时请求中断,如果此时CPUCPU正在执行一条指令,那正在执行一条指令,那么要等到这条指令执行完后,才响应中断。么要等到这条指令执行完后,才响应中

34、断。加封锁的指令(如加封锁的指令(如LOCK MOV AX,BXLOCK MOV AX,BX)应看作一条指令;)应看作一条指令;对加重复前缀的指令(如对加重复前缀的指令(如REP MOVSBREP MOVSB)要作为一个整体来处理,执行一次)要作为一个整体来处理,执行一次重复串指令即可响应中断;重复串指令即可响应中断;对对MOVMOV、POPPOP指令,如果处理对象是段寄存器,那么执行完本条指令后,指令,如果处理对象是段寄存器,那么执行完本条指令后,接着再执行一条指令才响应中断。接着再执行一条指令才响应中断。对对STISTI和和IRETIRET指令,也要在该指令执行完后,再执行一条指令才响应中

35、断。指令,也要在该指令执行完后,再执行一条指令才响应中断。第35页,共59页,编辑于2022年,星期三中断处理子程序中断处理子程序 中断处理子程序的编写步骤:中断处理子程序的编写步骤:保存寄存器内容;保存寄存器内容;如允许嵌套,则开中断(如允许嵌套,则开中断(STISTI););处理中断;处理中断;关中断(关中断(CLICLI););送中断结束命令(送中断结束命令(EOIEOI)给中断命令寄存器;)给中断命令寄存器;恢复寄存器内容;恢复寄存器内容;返回被中断的程序(返回被中断的程序(IRETIRET)。)。注意:注意:CPUCPU产生一次中断,产生一次中断,I/OI/O设设备只完成一个字节(或

36、字)的输备只完成一个字节(或字)的输入输出,所以中断处理程序所用入输出,所以中断处理程序所用的指针变量或数据变量一般应设的指针变量或数据变量一般应设置存储单元来保存。置存储单元来保存。第36页,共59页,编辑于2022年,星期三中断程序设计举例中断程序设计举例 例例8.58.5 响铃响铃P300-303P300-303例例8.68.6键盘输入、打印机输出键盘输入、打印机输出P303-310P303-310例例8.78.7 P310-313 P310-313除数为除数为0 0的中断处理程序的中断处理程序第37页,共59页,编辑于2022年,星期三练习与作业练习与作业P313-314 习题习题练习

37、:练习:8.58.5、8.68.6提交作业:提交作业:8.128.12第38页,共59页,编辑于2022年,星期三I/OI/O接口电路示意图接口电路示意图 处处理理器器数据寄存器数据寄存器状态寄存器状态寄存器控制寄存器控制寄存器输输入入输输出出设设备备数据总线数据总线控制总线控制总线地址总线地址总线外设数据外设数据状态信号状态信号控制信号控制信号I/OI/O接口电路接口电路第39页,共59页,编辑于2022年,星期三表表8.1 I/O8.1 I/O端口地址分配端口地址分配 第40页,共59页,编辑于2022年,星期三 例例8.1 8.1 发声程序发声程序-1-1 这是一个最基本的控制扬声器发出

38、声音的子程序。这是一个最基本的控制扬声器发出声音的子程序。通过通过I/OI/O指令使设备控制寄存器(指令使设备控制寄存器(I/OI/O端口地址为端口地址为61H61H)的第一位交替)的第一位交替为为0 0和和1 1,而端口,而端口61H61H的第的第1 1位和扬声器的脉冲门相连(位和扬声器的脉冲门相连(见图见图8.18.1),当第),当第1 1位位由由0 0变为变为1 1,延迟一会又由,延迟一会又由1 1变为变为0 0时,脉冲门就先打开后关闭,产生了一个脉冲时,脉冲门就先打开后关闭,产生了一个脉冲电流。这个脉冲电流被放大后送到扬声器使之发出了声音。电流。这个脉冲电流被放大后送到扬声器使之发出了

39、声音。61H 61H端口的第端口的第0 0位和一个振荡器(位和一个振荡器(2 2号定时器)相连,现在不用振荡号定时器)相连,现在不用振荡器产生声音,所以把第器产生声音,所以把第0 0位置零。位置零。第41页,共59页,编辑于2022年,星期三 例例8.1 8.1 发声程序发声程序-2-2;入口参数:声音频率入口参数:声音频率BX=6000BX=6000,发声延迟,发声延迟CX=1000CX=1000。SOUNDSOUNDPROCPROCNEARNEARPUSHPUSHAXAXPUSHPUSHDXDXMOV MOV DX,CXDX,CXININAL,61HAL,61HANDANDAL,11111

40、100BAL,11111100BTRIG:TRIG:XORXORAL,2AL,2OUTOUT61H,AL61H,ALMOVMOVCX,BXCX,BX;控制脉冲门开关控制脉冲门开关DELAY:DELAY:;的时间的时间第42页,共59页,编辑于2022年,星期三 例例8.1 8.1 发声程序发声程序-3-3LOOPLOOPDELAYDELAYDECDECDXDXJNEJNETRIGTRIGPOPPOPDXDXPOPPOPAXAXRETRETSOUNDSOUNDENDPENDP第43页,共59页,编辑于2022年,星期三 图图8.1 8.1 设备控制器设备控制器 通常一个外设的数据端口是通常一个外

41、设的数据端口是8 8位的,而状态与控制信息只需位的,而状态与控制信息只需一位或两位,所以不同外设的状态和控制位可共用一个端口。一位或两位,所以不同外设的状态和控制位可共用一个端口。61H61H端口的端口的0 0、1 1位是控制扬声器的,位是控制扬声器的,2 27 7位分别控制其他外部设位分别控制其他外部设备。备。第44页,共59页,编辑于2022年,星期三程序查询程序查询I/OI/O方式方式 这种这种CPUCPU与外设交换信息的方式称为查询方式或等待方式。与外设交换信息的方式称为查询方式或等待方式。造成造成CPUCPU必须查询等待的主要原因是许多外设工作速度比较低。必须查询等待的主要原因是许多

42、外设工作速度比较低。查询方式的优点:可以用程序安排几个输入输出设备的先后优先次序,最先查询查询方式的优点:可以用程序安排几个输入输出设备的先后优先次序,最先查询的设备,其工作的优先级也最高。的设备,其工作的优先级也最高。查询方式的缺点:浪费了查询方式的缺点:浪费了CPUCPU的时间,而且由查询转向相应的处理陈许的时间较的时间,而且由查询转向相应的处理陈许的时间较长,尤其是在设备比较多的情况下。长,尤其是在设备比较多的情况下。为了提高为了提高CPUCPU的工作效率,可以采用中断方式传送数据。的工作效率,可以采用中断方式传送数据。第45页,共59页,编辑于2022年,星期三 例例8.2 8.2 打

43、印字符程序打印字符程序-1-1 采用查询方式的打印字符程序。程序通过反复读取并测试打印机的状态来控采用查询方式的打印字符程序。程序通过反复读取并测试打印机的状态来控制输出。制输出。数据寄存器的端口地址为数据寄存器的端口地址为378H378H,状态寄存器的端口地址为,状态寄存器的端口地址为379H379H,控,控制寄存器的端口地址为制寄存器的端口地址为37AH37AH。它们各位的含义它们各位的含义如图如图8.28.2所示所示。第46页,共59页,编辑于2022年,星期三 例例8.2 8.2 打印字符程序打印字符程序-2-2.model small.model small.stack.stack.

44、data.datamessmessdbdbPrinter is normal,0dh,0ahPrinter is normal,0dh,0ahcountcountequequ$-mess$-mess.code.code.startup.startupmovmovsi,offset messsi,offset messmovmovcx,countcx,countnext:next:movmovdx,379hdx,379hwait:wait:ininal,dxal,dxtesttestal,80hal,80h 测试状态寄存器的第测试状态寄存器的第7 7位,如果为位,如果为0 0,表示打印机忙,表示

45、打印机忙,这时这时CPUCPU不能送出打印数据;所以程序再次循环,直到第不能送出打印数据;所以程序再次循环,直到第7 7位变为位变为1 1,表示打印机空闲,程序才从数据区读取一个字,表示打印机空闲,程序才从数据区读取一个字符送到打印机的数据寄存器。并由控制器发出一个选通信符送到打印机的数据寄存器。并由控制器发出一个选通信号(端口号(端口37AH37AH的第的第0 0位),控制打印机将这个字符打印输位),控制打印机将这个字符打印输出。出。第47页,共59页,编辑于2022年,星期三 例例8.2 8.2 打印字符程序打印字符程序-3-3jejewaitwaitmovmoval,sial,simov

46、movdx,378hdx,378houtoutdx,aldx,almovmovdx,37ahdx,37ahmovmoval,0dhal,0dhoutoutdx,aldx,alincincsisilooploopnextnext.exit.exit0 0endend第48页,共59页,编辑于2022年,星期三 图图8.2 8.2 打印机的状态寄存器和控制寄存器打印机的状态寄存器和控制寄存器第49页,共59页,编辑于2022年,星期三 例例8.3 8.3 轮流查询轮流查询-1-1 CPU CPU要从要从3 3个设备轮流输入数据,个设备轮流输入数据,PROC1PROC1、PROC2PROC2、PRO

47、C3PROC3分别是设备分别是设备1 1、设备、设备2 2和和设备设备3 3的数据输入程序,它们的状态寄存器的端口地址分别是的数据输入程序,它们的状态寄存器的端口地址分别是STAT1STAT1、STAT2STAT2、STAT3STAT3,这三个状态寄存器的第,这三个状态寄存器的第5 5位是输入准备位。位是输入准备位。INPUT:INPUT:ININAL,STAT1AL,STAT1TESTTESTAL,20HAL,20HJZJZDEV2DEV2CALLCALLFAR PTR PROC1FAR PTR PROC1DEV2:DEV2:ININAL,STAT2AL,STAT2TESTTESTAL,20

48、HAL,20HJZJZDEV3DEV3第50页,共59页,编辑于2022年,星期三 例例8.3 8.3 轮流查询轮流查询-2-2CALLCALLFARFARPTR PROC2PTR PROC2DEV3:DEV3:ININAL,STAT3AL,STAT3TESTTESTAL,20HAL,20HJZJZNO_INPUTNO_INPUTCALLCALLFARFARPTRPTRPROC3PROC3NO_INPUT:NO_INPUT:第51页,共59页,编辑于2022年,星期三 图图8.3 80X868.3 80X86中断源中断源第52页,共59页,编辑于2022年,星期三 图图8.5 8.5 中断向量

49、表中断向量表第53页,共59页,编辑于2022年,星期三 表表8.2 8.2 中断向量表地址分配中断向量表地址分配第54页,共59页,编辑于2022年,星期三 图图8.6 8.6 中断操作步骤中断操作步骤第55页,共59页,编辑于2022年,星期三 例例8.4-18.4-1MOVMOVAL,NAL,NMOVMOVAH,35HAH,35HINTINT21H21HPUSHPUSHESES;保存原来的保存原来的N N号中断向量号中断向量PUSHPUSHBXBXPUSHPUSHDSDSMOVMOVAX,SEG INTHANDAX,SEG INTHANDMOVMOVDS,AXDS,AXMOVMOVDX,

50、OFFSET INTHANDDX,OFFSET INTHANDMOVMOVAL,NAL,NMOVMOVAH,25HAH,25H;将将INTHANDINTHAND设置为新的设置为新的INTINT21H21H;N;N号中断服务程序号中断服务程序POPPOPDSDS第56页,共59页,编辑于2022年,星期三 例例8.4-28.4-2POPPOPDXDXPOPPOPDSDSMOVMOVAL,NAL,NMOVMOVAH,25HAH,25HINTINT21H21HRETRETINTHAND:INTHAND:IRETIRET第57页,共59页,编辑于2022年,星期三 图图8.7 8.7 中断过程中断过程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁