汇编语言程序设计第八章输入输出程序设计_第1页
汇编语言程序设计第八章输入输出程序设计_第2页
汇编语言程序设计第八章输入输出程序设计_第3页
汇编语言程序设计第八章输入输出程序设计_第4页
汇编语言程序设计第八章输入输出程序设计_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ibm-pc汇编语言程序设计第八章第八章 输入输出程序设计输入输出程序设计任课教师:陶雪丽任课教师:陶雪丽xueli_ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院22021-10-20本章内容提要本章内容提要 i/oi/o设备的数据传送方式设备的数据传送方式程序直接控制程序直接控制i/oi/o方式方式中断传送方式中断传送方式ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院32021-10-208.1 i/o8.1 i/o设备的数据传动方式设备的数据传动方式 cpucpu与外设与外设直接存储器存取(直接存

2、储器存取(dmadma)方式)方式ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院42021-10-208.1.1 cpu8.1.1 cpu与外设与外设 与与cpucpu进行数据交换的,除了存储器外,还有输入输出设备进行数据交换的,除了存储器外,还有输入输出设备(统称为外设)。(统称为外设)。 输入输入inin和输出和输出outout指令,可以从外设读取数据和向外设提供指令,可以从外设读取数据和向外设提供数据。数据。 由于外设种类繁多,其工作原理、数据格式、操作时序等各由于外设种类繁多,其工作原理、数据格式、操作时序等各异,所以在处理器与外设之间还有

3、一个协调两者数据传送的逻辑异,所以在处理器与外设之间还有一个协调两者数据传送的逻辑电路,称为电路,称为输入输出(输入输出(i/oi/o)接口电路)接口电路。 处理器并不直接操纵外设,而是通过处理器并不直接操纵外设,而是通过i/oi/o接口来控制外设。接口来控制外设。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院52021-10-20i/oi/o接口电路中的寄存器接口电路中的寄存器i/oi/o接口电路呈现给程序员的,是各种可编程寄存器。接口电路呈现给程序员的,是各种可编程寄存器。这些寄存器可以分成三类:这些寄存器可以分成三类:数据寄存器数据寄存器它保

4、存和处理与外设间交换的数据;它保存和处理与外设间交换的数据;控制寄存器控制寄存器处理器通过它对外设进行控制,也称处理器通过它对外设进行控制,也称命令寄存器;命令寄存器;状态寄存器状态寄存器外设的当前工作状态通过它向处理器外设的当前工作状态通过它向处理器提供。提供。 在涉及外设操作的输入输出程序中,各种寄存器以在涉及外设操作的输入输出程序中,各种寄存器以i/oi/o地址(端地址(端口)体现;对应三类寄存器分别称为:口)体现;对应三类寄存器分别称为:数据端口、控制端口、状态数据端口、控制端口、状态端口。端口。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学

5、院62021-10-20cpucpu与外设数据传送方式与外设数据传送方式程序直接控制传送方式程序直接控制传送方式程序查询程序查询i/oi/o方式方式中断传送方式中断传送方式直接存储器存取(直接存储器存取(dmadma)方式)方式ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院72021-10-208.1.2 8.1.2 直接存储器存取(直接存储器存取(dmadma)方式)方式主要由硬件主要由硬件dmadma控制器实现其传送功能。控制器实现其传送功能。dmadma(direct memory accessdirect memory access)方式,

6、也称为成组数据传送方式。)方式,也称为成组数据传送方式。主要用于一些高速的主要用于一些高速的i/oi/o设备。如磁带、磁盘、设备。如磁带、磁盘、a/da/d等设备。等设备。 传送数据时,每个字节一到达端口,就直接从接口送到存储器;传送数据时,每个字节一到达端口,就直接从接口送到存储器;同样,接口和它的同样,接口和它的dmadma控制器也能直接从存储器取出字节并把它送到控制器也能直接从存储器取出字节并把它送到i/oi/o设备去。设备去。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院82021-10-20dmadma工作原理工作原理dmadma控制器(

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

8、。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院92021-10-20dmadma传送步骤传送步骤由系统完成以下步骤:由系统完成以下步骤:dmadma控制器向控制器向cpucpu发出发出holdhold信号,请求使用总线。信号,请求使用总线。cpucpu发出响应信号发出响应信号holdhold给给dmadma控制器,并将总线让出,这时控制器,并将总线让出,这时cpucpu放弃放弃了对总线的控制,而了对总线的控制,而dmadma控制器获得了总线控制权。控制器获得了总线控制权。传输数据的存储器地址(在地址寄存器中)通过总线发出。传输数据的存储器地址(在

9、地址寄存器中)通过总线发出。传输的字节数通过数据总线进行传送。传输的字节数通过数据总线进行传送。地址寄存器加地址寄存器加1 1,以指向下一个要传送的字节。,以指向下一个要传送的字节。字节计数器减字节计数器减1 1。如字节计数器非如字节计数器非0 0,转向第,转向第3 3步。步。否则,否则,dmadma控制器撤销总线请求信号控制器撤销总线请求信号holdhold,传送结束,传送结束ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院102021-10-208.2 8.2 程序直接控制程序直接控制i/oi/o方式方式 i/o端口端口i/o指令指令i/o程序举

10、例程序举例ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院112021-10-208.2.1 i/o8.2.1 i/o端口端口 80 x86 80 x86中,中,i/oi/o端口独立编址,允许设置端口独立编址,允许设置64k64k(6553565535)个)个8 8位端口,位端口,或或32k32k(3276832768)个)个1616位端口。位端口。cpucpu和内存通过和内存通过i/oi/o端口与外设进行通信。端口与外设进行通信。表表8.18.1列出了部分端口地址(十六进制)。列出了部分端口地址(十六进制)。ibm-pc汇编语言程序设计河南师范大学

11、计算机与信息技术学院河南师范大学计算机与信息技术学院122021-10-208.2.2 i/o8.2.2 i/o指令指令 in/out in/out指令,即可传送字节又可传送字,使用的寄存器必须是指令,即可传送字节又可传送字,使用的寄存器必须是alal或或axax。 直接寻址:寻址直接寻址:寻址0 0255255号端口。号端口。间接寻址:所有端口,使用间接寻址:所有端口,使用dxdx寄存器。寄存器。ininax , 28hax , 28hmovmovdata_word , axdata_word , axininal , 27hal , 27htesttestal , 00000100hal

12、, 00000100hjnzjnzerrorerrormovmovdx , 126hdx , 126hininal , dxal , dx; ;端口端口126h126hororal , 80hal , 80h; ;第第7 7位控制成组数据传送位控制成组数据传送outoutdx , aldx , alibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院132021-10-208.2.3 i/o8.2.3 i/o程序举例程序举例例例8.1 8.1 发声子程序发声子程序soundsound例例8.28.2查询方式查询方式打印字符程序打印字符程序prt_char

13、prt_char例例8.38.3查询方式查询方式控制数据输入控制数据输入ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院142021-10-208.3 8.3 中断传送方式中断传送方式 8086的中断分类的中断分类中断向量表中断向量表中断过程中断过程中断优先级和中断嵌套中断优先级和中断嵌套中断处理过程中断处理过程ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院152021-10-20中断的相关概念中断的相关概念 中断是中断是cpucpu和外设进行数据传送的有效办法。它可以避免因反和外设进行数据传送的有效办法

14、。它可以避免因反复查询外设状态而浪费的时间,从而提高复查询外设状态而浪费的时间,从而提高cpucpu的效率。的效率。 中断是一种使中断是一种使cpucpu中止正在执行的程序而转去处理特殊事件的中止正在执行的程序而转去处理特殊事件的操作。操作。中断源中断源引起中断的事件。引起中断的事件。 外部中断(硬件中断)外部中断(硬件中断)由外设控制器或协处理器引起的中断。由外设控制器或协处理器引起的中断。 内部中断(软件中断)内部中断(软件中断)由程序中安排的中断指令由程序中安排的中断指令intint产生的产生的中断,或由中断,或由cpucpu的某些错误结果产生的中断。的某些错误结果产生的中断。8080/

15、80888080/8088的中断源的中断源如图如图8.38.3所示所示。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院162021-10-208.3.1 80868.3.1 8086的中断分类的中断分类 软件中断软件中断硬件中断硬件中断ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院172021-10-201. 1. 软件中断软件中断 软件中断又称内中断。软件中断又称内中断。它通常由三种情况引起:它通常由三种情况引起:由中断指令由中断指令intint引起引起;由于由于cpucpu的某些错误引起的某些错误引

16、起;为调试程序(为调试程序(debugdebug)设置的中断)设置的中断。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院182021-10-20(1 1)中断指令)中断指令intint引起的内中断引起的内中断 cpu cpu执行完一条执行完一条int nint n指令后,会立即产生中断,并调用系统中指令后,会立即产生中断,并调用系统中相应的中断处理程序来完成中断功能,相应的中断处理程序来完成中断功能,n n指出中断类型号。指出中断类型号。intint指令可以指定指令可以指定0 00ffh0ffh中的任何类型号。中的任何类型号。 除系统占用的类型号之

17、外,用户还可利用为用户保留的类型号除系统占用的类型号之外,用户还可利用为用户保留的类型号扩充新的中断处理功能。扩充新的中断处理功能。 int n int n 、intointo、除法错中断都不能被禁止,而且比任何外部中断、除法错中断都不能被禁止,而且比任何外部中断的优先级都高。的优先级都高。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院192021-10-20(2 2)处理)处理cpucpu某种错误的中断某种错误的中断除法错中断:除法错中断:int 0int 0 在执行除法时,如果除数为在执行除法时,如果除数为0 0或商超过了寄存器所能表达或商超过

18、了寄存器所能表达的范围,则产生一个类型为的范围,则产生一个类型为0 0的中断。的中断。溢出中断:溢出中断:intointo中断类型号为中断类型号为4 4 若溢出标志若溢出标志of=1of=1,则产生溢出中断;否则,不产生中断,则产生溢出中断;否则,不产生中断,cpucpu继续运行原程序。继续运行原程序。 该中断的处理程序,主要是打印出一个错误信息,在处该中断的处理程序,主要是打印出一个错误信息,在处理结束后,不返回原程序继续执行,而是把控制权交给操作理结束后,不返回原程序继续执行,而是把控制权交给操作系统。系统。 如:如:addaddax , valueax , valueintointo;

19、;测试加法溢出测试加法溢出ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院202021-10-20(3 3)为调试程序()为调试程序(debugdebug)设置的中断)设置的中断 单步中断:为寻找程序中的问题,进行单步工作(一次只执行一单步中断:为寻找程序中的问题,进行单步工作(一次只执行一条指令)。类型号为条指令)。类型号为1 1。 当单步标志位当单步标志位tftf1 1时,每条指令执行后,时,每条指令执行后,cpucpu会自动产生单会自动产生单步中断。步中断。 使用单步中断可以逐条指令地跟踪程序的流程,观察使用单步中断可以逐条指令地跟踪程序的流程

20、,观察cpucpu每每执行一条指令后,各个寄存器及有关存储单元的变化,从而指出执行一条指令后,各个寄存器及有关存储单元的变化,从而指出和确定产生错误的原因。和确定产生错误的原因。 断点中断:将程序分段,为每段设置一个断点。中断类型号为断点中断:将程序分段,为每段设置一个断点。中断类型号为3 3。 当当cpucpu执行到断点时便产生中断,可以检查各寄存器及有关存执行到断点时便产生中断,可以检查各寄存器及有关存储单元的内容。储单元的内容。 断点可以设置在程序的任何的地方。断点可以设置在程序的任何的地方。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院21

21、2021-10-202. 2. 硬件中断硬件中断硬件中断又称外中断。硬件中断又称外中断。硬件中断主要有两种来源:硬件中断主要有两种来源: 非屏蔽中断(非屏蔽中断(nminmi)为电源错、内存或为电源错、内存或i/oi/o总线的奇总线的奇偶等异常事件的中断保留的。中断类型号为偶等异常事件的中断保留的。中断类型号为2 2。 可屏蔽中断可屏蔽中断来自各种外设的中断。由外设的请求引来自各种外设的中断。由外设的请求引起的中断。起的中断。 可屏蔽中断受中断标志可屏蔽中断受中断标志ifif控制;控制; 非屏蔽中断和非屏蔽中断和ifif位无关。位无关。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学

22、院河南师范大学计算机与信息技术学院222021-10-20可屏蔽中断可屏蔽中断 从外设发出中断请求到从外设发出中断请求到cpucpu响应中断,有两个控制条件起决定性响应中断,有两个控制条件起决定性作用:作用: 该外设的中断请求是否屏蔽该外设的中断请求是否屏蔽由由中断屏蔽寄存器中断屏蔽寄存器(imrimr)控制。控制。 cpucpu是否允许响应中断是否允许响应中断由标志寄存器(由标志寄存器(flagsflags)中的)中的中断中断允许位允许位ifif控制。控制。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院232021-10-20中断屏蔽寄存器中断屏

23、蔽寄存器中断屏蔽寄存器的端口地址是中断屏蔽寄存器的端口地址是21h21h,如图,如图8.48.4所示。所示。中断屏蔽寄存器可分别控制某个可屏蔽中断源。中断屏蔽寄存器可分别控制某个可屏蔽中断源。 在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以确定允许用中断方式工作的外部设备。存器,以确定允许用中断方式工作的外部设备。; ;系统重设键盘中断系统重设键盘中断ininal , 21hal , 21hmovmoval , 11111101bal , 11111101boutout21h , al21h , alibm-pc汇编语言

24、程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院242021-10-20控制控制cpucpu的中断允许标志的中断允许标志ififcpucpu是否响应中断还与中断允许标志是否响应中断还与中断允许标志ifif有关。有关。if=0if=0,cpucpu禁止响应任何外设的中断(关中断);禁止响应任何外设的中断(关中断);if=1if=1,允许,允许cpucpu响应外设的中断请求(开中断)。响应外设的中断请求(开中断)。中断允许标志中断允许标志ifif是控制所有可屏蔽中断的。是控制所有可屏蔽中断的。 当任何类型的中断发生时,当前的当任何类型的中断发生时,当前的flagsflags

25、要入栈保存,然后清除要入栈保存,然后清除ifif位,进入中断处理程序,如果允许在一个中断处理程序的执行过程位,进入中断处理程序,如果允许在一个中断处理程序的执行过程中发生硬中断,则必须用一条中发生硬中断,则必须用一条stisti指令开中断。指令开中断。 当中断返回时,恢复了原当中断返回时,恢复了原flagsflags的值,其中的值,其中if=1if=1,则允许硬中断再,则允许硬中断再次发生。次发生。stisti设置中断允许位(设置中断允许位(if=1if=1)clicli清除中断允许位(清除中断允许位(if=0if=0)ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计

26、算机与信息技术学院252021-10-20中断命令寄存器中断命令寄存器 在一次中断处理结束之前,还应给在一次中断处理结束之前,还应给8259a8259a的可编程中断控制器的中的可编程中断控制器的中断命令寄存器发出中断结束命令(断命令寄存器发出中断结束命令(eoieoi:end of interruptend of interrupt),否则以),否则以后将屏蔽掉对同级中断或低级中断的处理。后将屏蔽掉对同级中断或低级中断的处理。中断命令寄存器的中断命令寄存器的i/oi/o端口地址为端口地址为20h20h(如图(如图8.48.4所示)。所示)。 在中断处理过程中,也可利用在中断处理过程中,也可利用

27、eoieoi命令清除当前中断请求,以响应命令清除当前中断请求,以响应同级或低级中断。同级或低级中断。; ;结束硬件中断结束硬件中断movmoval , 20hal , 20houtout20h , al20h , alibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院262021-10-208.3.2 8.3.2 中断向量表中断向量表每个中断都有一个中断类型号。每个中断都有一个中断类型号。80 x8680 x86可处理可处理256256种类型的中断,类型号为种类型的中断,类型号为0 00ffh0ffh。中断向量表就是各类型中断处理程序的入口地址表。中断

28、向量表就是各类型中断处理程序的入口地址表。 存储器的最低存储器的最低1.5kb1.5kb,从,从000000005ffh5ffh为系统占用,其中,最低的为系统占用,其中,最低的1kb1kb,从,从00000000003ffh003ffh存放中断向量表。存放中断向量表。256256个中断向量,每个中断向量占个中断向量,每个中断向量占4 4个字节。个字节。每类中断向量的地址中断类型号每类中断向量的地址中断类型号4 4。图图8.58.5给出了中断向量表给出了中断向量表。表表8.28.2给出了中断向量表地址分配给出了中断向量表地址分配。图图8.68.6展示展示了了中断操作步骤中断操作步骤。ibm-pc

29、汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院272021-10-20中断操作步骤中断操作步骤中断操作步骤:中断操作步骤:取中断类型号;取中断类型号;计算中断向量地址;计算中断向量地址;取中断向量,偏移地址送取中断向量,偏移地址送ipip,段地址送,段地址送dsds;转入中断处理程序;转入中断处理程序;中断返回到中断返回到intint指令的下一条指令。指令的下一条指令。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院282021-10-20为中断类型为中断类型n n设置中断向量设置中断向量movmovax , 0ax

30、 , 0movmoves , axes , axmovmovbx , nbx , n* *4 4movmovax , offset inthandax , offset inthandmovmoves:word ptrbx , axes:word ptrbx , axmovmovax , seg inthandax , seg inthandmovmoves:word ptrbx+2 , axes:word ptrbx+2 , axinthand:inthand:iretiret 用户可以利用保留的中断类型号扩充自己需要的中断功能,用户可以利用保留的中断类型号扩充自己需要的中断功能, 对新增加

31、的中断功能要在中断类型表中建立相应的中断向量。对新增加的中断功能要在中断类型表中建立相应的中断向量。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院292021-10-20使用使用dosdos功能调用(功能调用(21h21h)存取中断向量)存取中断向量例例8.48.4使用使用dosdos功能调用存取中断向量功能调用存取中断向量ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院302021-10-208.3.3 8.3.3 中断过程中断过程 当中断发生时,由中断机构自动完成下列操作:当中断发生时,由中断机构自动

32、完成下列操作:取中断类型号取中断类型号n n;标志寄存器(标志寄存器(flagsflags)内容入栈;)内容入栈;当前代码段寄存器(当前代码段寄存器(cscs)内容入栈;)内容入栈;当前指令指针寄存器(当前指令指针寄存器(ipip)内容入栈;)内容入栈;禁止硬件中断和单步中断(禁止硬件中断和单步中断(if=0 , tf=0if=0 , tf=0););从中断向量表中取从中断向量表中取4 4n n的字内容送的字内容送ipip,取,取4 4n+2n+2的字内容送的字内容送cscs;转中断处理程序。转中断处理程序。如图如图8.78.7的中断过程示意图的中断过程示意图。ibm-pc汇编语言程序设计河南

33、师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院312021-10-208.3.4 8.3.4 中断优先级和中断嵌套中断优先级和中断嵌套 80868086规定的中断优先级次序为:规定的中断优先级次序为:优先级优先级 高高软件中断(除法错,软件中断(除法错,into into ,intint)非屏蔽中断(非屏蔽中断(nminmi)可屏蔽中断(可屏蔽中断(intrintr)低低单步中断单步中断 可屏蔽中断的优先权分为八级,正常情况下,优先级次序是:可屏蔽中断的优先权分为八级,正常情况下,优先级次序是:ir0 , ir1 , ir2 , ir3 , ir4 ,ir5 , ir6 , ir

34、7ir0 , ir1 , ir2 , ir3 , ir4 ,ir5 , ir6 , ir7定时器定时器打印机打印机优先级高优先级高低低ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院322021-10-208259a8259a的中断命令寄存器控制优先级的中断命令寄存器控制优先级 8259a 8259a的中断命令寄存器的第的中断命令寄存器的第6 6、7 7位控制各种中断请求的优先级次位控制各种中断请求的优先级次序。序。r rslsl0 00 0正常优先级方式正常优先级方式0 01 1清除由清除由l2l2l0l0指定的中断请求指定的中断请求1 10 0各

35、中断优先级依次左循环一个位置各中断优先级依次左循环一个位置1 11 1各中断优先级依次循环到由各中断优先级依次循环到由l2l2l0l0指定的中断指定的中断请求到达最低优先级位置上请求到达最低优先级位置上; ;使优先级次序再左循环一个位置使优先级次序再左循环一个位置movmoval , 10100000al , 10100000outout20h , al20h , al;ir6 , ir7 , ir0 , ir1 , ir2 ,ir3 ,ir4 , ir5;ir6 , ir7 , ir0 , ir1 , ir2 ,ir3 ,ir4 , ir5ibm-pc汇编语言程序设计河南师范大学计算机与信息

36、技术学院河南师范大学计算机与信息技术学院332021-10-20中断嵌套中断嵌套 中断嵌套:正在运行的中断处理程序,又被其他中断源中断的情况。中断嵌套:正在运行的中断处理程序,又被其他中断源中断的情况。 80 x86 80 x86没有规定中断嵌套的深度(中断程序又被中断的层次),实没有规定中断嵌套的深度(中断程序又被中断的层次),实际受堆栈容量的限制。际受堆栈容量的限制。 一个中断处理程序,在开中断的情况下,可以被优先级高于它的一个中断处理程序,在开中断的情况下,可以被优先级高于它的中断源中断。中断源中断。 只有发出了只有发出了eoieoi命令,清除正在执行的中断请求,才可以响应同级命令,清除

37、正在执行的中断请求,才可以响应同级或低级的中断。或低级的中断。 如图如图8.88.8所示所示:正常优先级方式下,优先级中断和中断嵌套发生时:正常优先级方式下,优先级中断和中断嵌套发生时的处理过程。的处理过程。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院342021-10-208.3.5 8.3.5 中断处理程序中断处理程序 主程序为响应中断所做的准备工作以及硬件(包括主程序为响应中断所做的准备工作以及硬件(包括cpucpu和外设接和外设接口)自动完成以下动作:口)自动完成以下动作:ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师

38、范大学计算机与信息技术学院352021-10-20中断响应的特殊情况中断响应的特殊情况 注意:设备发到注意:设备发到cpucpu的中断请求信号在时间上是随机的,只要未被的中断请求信号在时间上是随机的,只要未被屏蔽的设备本身的状态是准备好或空闲的,它就会向屏蔽的设备本身的状态是准备好或空闲的,它就会向cpucpu请求中断,如请求中断,如果此时果此时cpucpu正在执行一条指令,那么要等到这条指令执行完后,才响应正在执行一条指令,那么要等到这条指令执行完后,才响应中断。中断。加封锁的指令(如加封锁的指令(如lock mov ax , bxlock mov ax , bx)应看作一条指令;)应看作一

39、条指令; 对加重复前缀的指令(如对加重复前缀的指令(如rep movsbrep movsb)要作为一个整体来处理,执)要作为一个整体来处理,执行一次重复串指令即可响应中断;行一次重复串指令即可响应中断; 对对movmov、poppop指令,如果处理对象是段寄存器,那么执行完本条指令指令,如果处理对象是段寄存器,那么执行完本条指令后,接着再执行一条指令才响应中断。后,接着再执行一条指令才响应中断。 对对stisti和和iretiret指令,也要在该指令执行完后,再执行一条指令才响指令,也要在该指令执行完后,再执行一条指令才响应中断。应中断。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术

40、学院河南师范大学计算机与信息技术学院362021-10-20中断处理子程序中断处理子程序 中断处理子程序的编写步骤:中断处理子程序的编写步骤:保存寄存器内容;保存寄存器内容;如允许嵌套,则开中断(如允许嵌套,则开中断(stisti););处理中断;处理中断;关中断(关中断(clicli););送中断结束命令(送中断结束命令(eoieoi)给中断命令寄存器;)给中断命令寄存器;恢复寄存器内容;恢复寄存器内容;返回被中断的程序(返回被中断的程序(iretiret)。)。注意:注意:cpucpu产生一次中断,产生一次中断,i/oi/o设备只完成一个字节(或设备只完成一个字节(或字)的输入输出,所以中

41、断字)的输入输出,所以中断处理程序所用的指针变量或处理程序所用的指针变量或数据变量一般应设置存储单数据变量一般应设置存储单元来保存。元来保存。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院372021-10-20中断程序设计举例中断程序设计举例 例例8.58.5 响铃响铃p300-303p300-303例例8.68.6键盘输入、打印机输出键盘输入、打印机输出 p303-310p303-310例例8.78.7 p310-313 p310-313除数为除数为0 0的中断处理程序的中断处理程序ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河

42、南师范大学计算机与信息技术学院382021-10-20练习与作业练习与作业p313-314 习题习题练习:练习:8.58.5、8.68.6提交作业:提交作业:8.128.12ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院392021-10-20i/oi/o接口电路示意图接口电路示意图 处理器处理器数据寄存器数据寄存器状态寄存器状态寄存器控制寄存器控制寄存器输入输出设备输入输出设备数据总线数据总线控制总线控制总线地址总线地址总线外设数据外设数据状态信号状态信号控制信号控制信号i/oi/o接口电路接口电路ibm-pc汇编语言程序设计河南师范大学计算机与

43、信息技术学院河南师范大学计算机与信息技术学院402021-10-20表表8.1 i/o8.1 i/o端口地址分配端口地址分配 ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院412021-10-20 例例8.1 8.1 发声程序发声程序-1-1 这是一个最基本的控制扬声器发出声音的子程序。这是一个最基本的控制扬声器发出声音的子程序。 通过通过i/oi/o指令使设备控制寄存器(指令使设备控制寄存器(i/oi/o端口地址为端口地址为61h61h)的)的第一位交替为第一位交替为0 0和和1 1,而端口,而端口61h61h的第的第1 1位和扬声器的脉冲门相连

44、位和扬声器的脉冲门相连(见图见图8.18.1),当第),当第1 1位由位由0 0变为变为1 1,延迟一会又由,延迟一会又由1 1变为变为0 0时,脉时,脉冲门就先打开后关闭,产生了一个脉冲电流。这个脉冲电流被冲门就先打开后关闭,产生了一个脉冲电流。这个脉冲电流被放大后送到扬声器使之发出了声音。放大后送到扬声器使之发出了声音。 61h 61h端口的第端口的第0 0位和一个振荡器(位和一个振荡器(2 2号定时器)相连,现在不号定时器)相连,现在不用振荡器产生声音,所以把第用振荡器产生声音,所以把第0 0位置零。位置零。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与

45、信息技术学院422021-10-20 例例8.1 8.1 发声程序发声程序-2-2; ;入口参数:声音频率入口参数:声音频率bx=6000bx=6000,发声延迟,发声延迟cx=1000cx=1000。soundsoundprocprocnearnearpushpushaxaxpushpushdxdxmov mov dx , cxdx , cxininal , 61hal , 61handandal , 11111100bal , 11111100btrig:trig:xorxoral , 2al , 2outout61h , al61h , almovmovcx , bxcx , bx; ;

46、控制脉冲门开关控制脉冲门开关delay:delay:; ;的时间的时间ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院432021-10-20 例例8.1 8.1 发声程序发声程序-3-3looploopdelaydelaydecdecdxdxjnejnetrigtrigpoppopdxdxpoppopaxaxretretsoundsoundendpendpibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院442021-10-20 图图8.1 8.1 设备控制器设备控制器 通常一个外设的数据端口是通常一个外设

47、的数据端口是8 8位的,而状态与控制信息位的,而状态与控制信息只需一位或两位,所以不同外设的状态和控制位可共用一个只需一位或两位,所以不同外设的状态和控制位可共用一个端口。端口。61h61h端口的端口的0 0、1 1位是控制扬声器的,位是控制扬声器的,2 27 7位分别控制其位分别控制其他外部设备。他外部设备。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院452021-10-20程序查询程序查询i/oi/o方式方式 这种这种cpucpu与外设交换信息的方式称为查询方式或等待方式。与外设交换信息的方式称为查询方式或等待方式。造成造成cpucpu必须查

48、询等待的主要原因是许多外设工作速度比较低。必须查询等待的主要原因是许多外设工作速度比较低。 查询方式的优点:可以用程序安排几个输入输出设备的先后优查询方式的优点:可以用程序安排几个输入输出设备的先后优先次序,最先查询的设备,其工作的优先级也最高。先次序,最先查询的设备,其工作的优先级也最高。 查询方式的缺点:浪费了查询方式的缺点:浪费了cpucpu的时间,而且由查询转向相应的处的时间,而且由查询转向相应的处理陈许的时间较长,尤其是在设备比较多的情况下。理陈许的时间较长,尤其是在设备比较多的情况下。为了提高为了提高cpucpu的工作效率,可以采用中断方式传送数据。的工作效率,可以采用中断方式传送

49、数据。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院462021-10-20 例例8.2 8.2 打印字符程序打印字符程序-1-1 采用查询方式的打印字符程序。程序通过反复读取并测试打采用查询方式的打印字符程序。程序通过反复读取并测试打印机的状态来控制输出。印机的状态来控制输出。 数据寄存器的端口地址为数据寄存器的端口地址为378h378h,状态寄存器的端口地址为,状态寄存器的端口地址为379h379h,控制寄存器的端口地址为,控制寄存器的端口地址为37ah37ah。 它们各位的含义它们各位的含义如图如图8.28.2所示所示。ibm-pc汇编语言程

50、序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院472021-10-20 例例8.2 8.2 打印字符程序打印字符程序-2-2.model small.model small.stack.stack.data.datamessmessdbdbprinter is normal , 0dh , 0ahprinter is normal , 0dh , 0ahcountcountequequ$-mess$-mess.code.code.startup.startupmovmovsisi , offset mess , offset messmovmovcxcx , count

51、 , countnext:next:movmovdxdx , 379h , 379hwait:wait:ininal , dxal , dxtesttestal , 80hal , 80h 测试状态寄存器的第测试状态寄存器的第7 7位,如果为位,如果为0 0,表示打印机忙,表示打印机忙,这时这时cpucpu不能送出打印数据;所以程序再次循环,直到第不能送出打印数据;所以程序再次循环,直到第7 7位变为位变为1 1,表示打印机空闲,程序才从数据区读取一个字,表示打印机空闲,程序才从数据区读取一个字符送到打印机的数据寄存器。并由控制器发出一个选通信符送到打印机的数据寄存器。并由控制器发出一个选通信

52、号(端口号(端口37ah37ah的第的第0 0位),控制打印机将这个字符打印输位),控制打印机将这个字符打印输出。出。ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院482021-10-20 例例8.2 8.2 打印字符程序打印字符程序-3-3jejewaitwaitmovmoval , sial , si movmovdxdx , 378h , 378houtoutdxdx , al , almovmovdxdx , 37ah , 37ahmovmoval , 0dhal , 0dhoutoutdxdx , al , alincincsisilooploopnextnext.exit.exit0 0endendibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院492021-10-20 图图8.2 8.2 打印机的状态寄存器和控制寄存器打印机的状态寄存器和控制寄存器ibm-pc汇编语言程序设计河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院502021-10-20 例例8.3 8.3 轮流查询轮流查询-1-1 cpu cpu要从要从3 3个设备轮流输入数据,个设备轮流输入数据,proc1proc1、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论