汇编语言程序设计6_第1页
汇编语言程序设计6_第2页
汇编语言程序设计6_第3页
汇编语言程序设计6_第4页
汇编语言程序设计6_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

1、 第第6 6章章 输入输出程序设计输入输出程序设计主编主编 郭显久郭显久大连海洋大学信息工程学院大连海洋大学信息工程学院2011年8月9日汇编语言程序设计汇编语言程序设计教材配套课件教材配套课件 大连理工大学出版社大连理工大学出版社 输入输入/输出概述输出概述 程序直接控制程序直接控制输入输入/输出方式输出方式 中断输入中断输入/输出方式输出方式 DOS系统功能调用系统功能调用 BIOS中断调用中断调用提提 纲纲 6.1.1 CPU与外部设备与外部设备 由于外部设备种类繁多,工作原理各不相同,因此计算机与外部设备由于外部设备种类繁多,工作原理各不相同,因此计算机与外部设备进行数据交换需要满足两

2、个条件,即:首先通过相应的专门接口电路将计进行数据交换需要满足两个条件,即:首先通过相应的专门接口电路将计算机和其外部设备连接起来,接口实现对信号的控制与管理;其次是要有算机和其外部设备连接起来,接口实现对信号的控制与管理;其次是要有相应的软件来驱动外部设备,使之能够完成所要求的工作。图相应的软件来驱动外部设备,使之能够完成所要求的工作。图6.1为计算机为计算机与外部设备连接示意图。与外部设备连接示意图。6.1 6.1 输入输入/ /输出概述输出概述 在图在图中,计算机的外部设备都是通过中,计算机的外部设备都是通过I/O接口连接到系统上的,接口连接到系统上的,I/O接口接口包括数据、控制和状态

3、三种不同性质的信息,分别由相应的寄存器存放。包括数据、控制和状态三种不同性质的信息,分别由相应的寄存器存放。 1数据寄存器:用来存放外部设备与数据寄存器:用来存放外部设备与CPU之间传送的数据,这种寄存之间传送的数据,这种寄存器实际上起缓冲区的作用。不同的器实际上起缓冲区的作用。不同的I/O设备要求传送的数据类型一般是不同设备要求传送的数据类型一般是不同的,例如,向显示器传送数据必须是的,例如,向显示器传送数据必须是ASCII码,而不能是二进制形式的数。码,而不能是二进制形式的数。 2控制寄存器:控制寄存器:CPU给外设或接口的命令通过此寄存器进行传送,通过给外设或接口的命令通过此寄存器进行传

4、送,通过控制命令告诉外设或接口要做什么。例如:控制命令告诉外设或接口要做什么。例如:CPU向打印机接口发送启动或停向打印机接口发送启动或停止打印的命令来控制打印机。止打印的命令来控制打印机。 3状态寄存器:用来存放外设或接口的当前状态信息,状态寄存器:用来存放外设或接口的当前状态信息,CPU通过读取该通过读取该信息,可以实时了解外设或接口的工作情况。对于输入设备,通常用准备好信息,可以实时了解外设或接口的工作情况。对于输入设备,通常用准备好(READY)信号来表示外设已准备好数据,这时信号来表示外设已准备好数据,这时CPU可以从其读入数据。对可以从其读入数据。对于输出设备,通常用忙于输出设备,

5、通常用忙(BUSY)信号表示外设是否处于空闲状态,如处于空信号表示外设是否处于空闲状态,如处于空闲状态,则闲状态,则CPU可以向其发送数据,否则可以向其发送数据,否则CPU要等待。要等待。 这些寄存器都分配一个称为这些寄存器都分配一个称为I/O端口的地址编码,端口的地址编码,CPU和内存就是通过和内存就是通过这些端口和外部设备进行通信的。在这些端口和外部设备进行通信的。在8086微机中,微机中,I/O端口的编址在一个独端口的编址在一个独立的地址空间中,在这个立的地址空间中,在这个I/O空间中允许设置空间中允许设置64K个个8位或位或32K个个16位端口地位端口地址。表址。表6.1列出了部分列出

6、了部分I/O端口地址,对于不同型号的计算机及其接口,其端口地址,对于不同型号的计算机及其接口,其I/O端口的地址有时不完全相同。端口的地址有时不完全相同。 6.1 6.1 输入输入/ /输出概述输出概述 6.1.2 输入输入/输出指令输出指令 CPU寻址外部寻址外部I/O端口有两种方式,一是存储器寻址方式,在这种编址端口有两种方式,一是存储器寻址方式,在这种编址方式中,把方式中,把I/O端口作为存储器的一个存储单元,统一纳入存储器地址空间,端口作为存储器的一个存储单元,统一纳入存储器地址空间,为每一个端口分配一个存储器地址,为每一个端口分配一个存储器地址,CPU可以用访问存储器的方式来访问可以

7、用访问存储器的方式来访问I/O端口。这种编址方式的优点是:不用专门设置访问端口的指令,用于访端口。这种编址方式的优点是:不用专门设置访问端口的指令,用于访问存储器的指令都可以用于访问端口。缺点是:由于端口占用了存储器的一问存储器的指令都可以用于访问端口。缺点是:由于端口占用了存储器的一部分存储空间,使得存储器的实际存储空间减少;程序部分存储空间,使得存储器的实际存储空间减少;程序I/O操作不清晰,难操作不清晰,难以区分程序中的以区分程序中的I/O操作和存储器操作;由于指令长度比专门的操作和存储器操作;由于指令长度比专门的I/O指令长,指令长,因此执行时间要长。在因此执行时间要长。在MCS51、

8、MCS96等单片机系统中,多数采用这等单片机系统中,多数采用这种编址方法。种编址方法。6.1 6.1 输入输入/ /输出概述输出概述 1输入指令输入指令IN指令格式:指令格式:IN累加器,端口地址累加器,端口地址 IN指令是从指定端口读取一个字节或字,传送到指令是从指定端口读取一个字节或字,传送到AL或或AX中。端口寻址中。端口寻址可采用直接寻址或间接寻址两种方式,当采用直接寻址时,端口地址是一个可采用直接寻址或间接寻址两种方式,当采用直接寻址时,端口地址是一个8位立即数,其范围是位立即数,其范围是0255;当采用间接寻址方式时,端口地址必须存放;当采用间接寻址方式时,端口地址必须存放在在DX

9、寄存器中,其范围是寄存器中,其范围是065535。具体指令格式有以下四种:。具体指令格式有以下四种:INAL,PORT;AL(PORT)INAX,PORT;AX(PORT+1:PORT)INAL,DX;AL(DX)INAX,DX;AX(DX+1):(DX) 例例6.1 下面两条指令将端口地址下面两条指令将端口地址0028H和和0029H的内容传送到存存器的内容传送到存存器DATAW单元中。单元中。 INAX,28HMOVDATAW,AX 例例6.2 LPT1打印机状态端口地址为打印机状态端口地址为379H,试将其状态信息读入,试将其状态信息读入AL。MOVDX,379HIN AL,DX6.1

10、6.1 输入输入/ /输出概述输出概述 2输出指令输出指令OUT指令格式:指令格式:OUT端口地址,累加器端口地址,累加器 OUT指令将指令将AL(字节字节)或或AX(字字)的内容输出到指定端口。端口寻址方的内容输出到指定端口。端口寻址方式与输入指令相同,所以输出指令也有以下四种格式:式与输入指令相同,所以输出指令也有以下四种格式:OUTPORT,AL;(PORT)(AL)OUTPORT,AX;(PORT+1:PORT)(AX)OUTDX, AL;(DX)(AL)OUTDX,AX;(DX+1:DX)(AX) 例例6.3 LPT1打印机控制端口地址为打印机控制端口地址为37AH,试向其写入控制字

11、,试向其写入控制字0CH。MOVDX,37AHMOVAL,0CHOUT DX,AL 需要注意的是:需要注意的是:I/O指令中使用的寄存器必须是指令中使用的寄存器必须是AL或或AX。端口寻址方。端口寻址方式中,间接寻址可以覆盖直接寻址的地址范围,但直接寻址范围只能是式中,间接寻址可以覆盖直接寻址的地址范围,但直接寻址范围只能是0255。I/O指令端口地址没有使用分段寻址,因而端口地址范围在指令端口地址没有使用分段寻址,因而端口地址范围在065535的的64KB之间。之间。6.1 6.1 输入输入/ /输出概述输出概述 程序直接控制输入程序直接控制输入/输出方式又分为两种,一是为直接方式,是指输出

12、方式又分为两种,一是为直接方式,是指CPU可可在任何时刻直接用在任何时刻直接用I/O指令与外部设备进行数据交换。显然,这种方式对外设指令与外部设备进行数据交换。显然,这种方式对外设有很高的要求,它必须能像内存一样时刻准备着与有很高的要求,它必须能像内存一样时刻准备着与CPU进行数据传递,并且能进行数据传递,并且能够跟上够跟上CPU的速度,保证传送信息的正确性。另一种是查询方式,有些外部设的速度,保证传送信息的正确性。另一种是查询方式,有些外部设备传递数据的速度比较慢,而备传递数据的速度比较慢,而CPU执行指令的速度比它快很多,所以如果不考执行指令的速度比它快很多,所以如果不考虑外设与虑外设与C

13、PU之间的速度匹配问题,就可能造成数据丢失。之间的速度匹配问题,就可能造成数据丢失。 6.2.1直接方式直接方式 直接输入直接输入/输出方式的优点是硬件电路简单,程序编写容易,调试方便等。输出方式的优点是硬件电路简单,程序编写容易,调试方便等。 例例6.4 有一数据采集系统,所采集的参数有流量、压力和温度。参数都经有一数据采集系统,所采集的参数有流量、压力和温度。参数都经过数字传感器转为数字量存入接口寄存器中,硬件连接如图过数字传感器转为数字量存入接口寄存器中,硬件连接如图6.2所示,试编程所示,试编程实现参数的采集,并将数据存入实现参数的采集,并将数据存入BUFFER单元中。单元中。 如图所

14、示,设端口地址分别为如图所示,设端口地址分别为30H、31H和和32H,端口寻址是通过地址译,端口寻址是通过地址译码器选中和码器选中和IO/M有效来选通相应的端口地址。由于所采集的物理量变化缓慢,有效来选通相应的端口地址。由于所采集的物理量变化缓慢,采集的时间不受限制,传感器输出始终处于准备好的状态,因此可以直接访问采集的时间不受限制,传感器输出始终处于准备好的状态,因此可以直接访问传感器的端口来读取参数。传感器的端口来读取参数。 6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 DATA SEGMENTBUFFERDB3 DUP(?);定义数据存储区;定义数据存储区PORT1EQU

15、30H;定义端口地址常量;定义端口地址常量PORT2EQU31HPORT3EQU32HDATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:PUSHDSSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXNEXT:LEABX,BUFFER;取数据存储区有效地址;取数据存储区有效地址INAL,PORT1;读温度数据;读温度数据MOVBX,AL;存温度数据;存温度数据CODEENDSEND START6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 INCBXINAL,PORT2;读流量数据;读流量数据MOV BX,

16、AL;存流量数据;存流量数据INCBXINAL,PORT3;读压力数据;读压力数据MOV BX,AL;存压力数据;存压力数据CALL TREAT;调用数据处理子程序;调用数据处理子程序JMPNEXTMAINENDPTREATPROCNEAR;数据处理子程序;数据处理子程序RETTREATENDPCODEENDSENDSTART6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 例例6.5 利用计算机利用计算机8253-5定时器声源产生一发声程序。该程序按照输入定时器声源产生一发声程序。该程序按照输入指定可发出一个或多个长音指定可发出一个或多个长音(每个长音为每个长音为3秒秒),以及一个

17、或多个短音,以及一个或多个短音(每个短每个短音为音为0.5秒秒)。每个发音之间的间歇为。每个发音之间的间歇为0.5秒。计算机发声系统硬件原理框图如秒。计算机发声系统硬件原理框图如图图6.3所示。所示。 该系统的发生原理是:该系统的发生原理是:8253-5定时器通道定时器通道2计数器的门控信号由计数器的门控信号由8255端口端口B的的D0位控制,通道位控制,通道2计数器的输出信号能否驱动扬声器,还取决于计数器的输出信号能否驱动扬声器,还取决于8255端端口口B的的D1位,当位,当D0D1=11时即将定时器与扬声器接通,可使扬声器发出声音。时即将定时器与扬声器接通,可使扬声器发出声音。 对对825

18、3-5定时器通道定时器通道2计数器的编程为方式计数器的编程为方式3,预置一固定的音调频率,预置一固定的音调频率(输入一除数输入一除数),当,当D0=1时,计数器开始计数,通道时,计数器开始计数,通道2计数器可产生输出信号。计数器可产生输出信号。若置入计数初值为若置入计数初值为533H,则计数器可产生一方波频率序列,其频率等于,则计数器可产生一方波频率序列,其频率等于6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 1.1931816MHz/533H=896Hz。8253-5定时器通道定时器通道2计数器的端计数器的端口地址为口地址为42H,8253-5定时器控制字寄存器的端口地址为定时

19、器控制字寄存器的端口地址为43H。其控制字的格式及设置如下:其控制字的格式及设置如下: 6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 ;判断长短音子程序;判断长短音子程序(入口参数:入口参数:DH=发出长音个数,发出长音个数,DL=发出短音个数发出短音个数)LSSOUNDPROCNEARPUSHF;保护标志寄存器;保护标志寄存器CLI;关中断;关中断ORDH,DH;判断是否发长音;判断是否发长音JZSHORT1LONG1:MOVBL,6;置长音计数器;置长音计数器CALL SOUND ;调发声子程序;调发声子程序LONG2:LOOP LONG2;发音之间的间歇;发音之间的间歇DE

20、CDH;继续发长音吗?;继续发长音吗?JNZLONG1SHORT1:MOVBL,1;置短音计数器;置短音计数器CALL SOUND ;调发声子程序;调发声子程序SHORT2:LOOP SHORT2;发音之间的间歇;发音之间的间歇DECDL;继续发短音吗?;继续发短音吗?JNZSHORT1DELAY1:LOOP DELAY1;发完音间歇;发完音间歇6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 DELAY2:LOOP DELAY2;返回前间歇;返回前间歇 POPF;恢复标志寄存器;恢复标志寄存器 RETLSSOUND ENDP发声子程序发声子程序(入口参数:入口参数:BL=发音时间,

21、单位:发音时间,单位:0.5秒秒)SOUNDPROC NEARMOVAL,10110110B ;通道;通道2方式字方式字OUT43H,AL;写入控制字端口;写入控制字端口MOVAX,533H;确定;确定896Hz除数除数OUT42H,AL;先送;先送LSBMOVAL,AHOUT42H,AL;再送;再送MSBINAL,61H;读;读8255端口端口BMOVAH,AL;保留原端口信息;保留原端口信息ORAL,03HOUT61H,AL;接通扬声器;接通扬声器SUBCX,CX;一次发声;一次发声0.5秒秒6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 6.2.2 6.2.2 查询方式查询方

22、式 对于工作速度较低的外部设备,当对于工作速度较低的外部设备,当CPUCPU要向其输出数据时,在输出前要向其输出数据时,在输出前必须要查询外设是否处于接收数据的状态。若处于接收状态,则必须要查询外设是否处于接收数据的状态。若处于接收状态,则CPUCPU可执可执行行OUTOUT指令,向外设输出数据,否则重新查询,直到外设处于接收状态为指令,向外设输出数据,否则重新查询,直到外设处于接收状态为止。同样,当止。同样,当CPUCPU要从外设读入数据时,在读入前也必须查询输入设备是要从外设读入数据时,在读入前也必须查询输入设备是否处于数据准备好状态。若数据准备好,则否处于数据准备好状态。若数据准备好,则

23、CPUCPU可执行可执行ININ指令,从外设读指令,从外设读入数据,否则重新查询,直到外设准备好数据为止。需要注意的是:在外入数据,否则重新查询,直到外设准备好数据为止。需要注意的是:在外设没有准备好之前,设没有准备好之前,CPUCPU始终处于查询等待,不能做其它操作。如果外设始终处于查询等待,不能做其它操作。如果外设可能由于故障等原因始终处于未准备好状态,为防止长时间查询而使可能由于故障等原因始终处于未准备好状态,为防止长时间查询而使CPUCPU处于无限循环等待状态,则在实际查询输入处于无限循环等待状态,则在实际查询输入/ /输出程序中可以设定一个超输出程序中可以设定一个超时参数。即在规定的

24、时间内,若外设没有准备好,则放弃此次数据的交换时参数。即在规定的时间内,若外设没有准备好,则放弃此次数据的交换过程。其一般查询方式的流程图如图过程。其一般查询方式的流程图如图6.46.4所示。所示。 6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 例例6.6 控制打印机以查询方式工作,打印一个字符串,共打印控制打印机以查询方式工作,打印一个字符串,共打印10行,行,在打印过程中要进行超时检查,若超时,则在显示器上输出在打印过程中要进行超时检查,若超时,则在显示器上输出“Printer Error”。打印字符串如下:。打印字符串如下: “Print a character strin

25、g” 打印机是一种可以按查询方式工作的输出外设,它与主机连接的接口打印机是一种可以按查询方式工作的输出外设,它与主机连接的接口部件是打印机适配器,也就是平常所说的部件是打印机适配器,也就是平常所说的“标准并行接口标准并行接口”。打印机接口。打印机接口中包含数据寄存器、状态寄存器和控制寄存器,它们各自占据一个外设端中包含数据寄存器、状态寄存器和控制寄存器,它们各自占据一个外设端口号码,分别是:数据寄存器口号码,分别是:数据寄存器378H,状态寄存器,状态寄存器379H,控制寄存,控制寄存器器37AH。打印机接口的状态寄存器和控制寄存器各位的定义如下:。打印机接口的状态寄存器和控制寄存器各位的定义

26、如下:打印机状态寄存器:打印机状态寄存器:6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 在本例中,为实现超时检查,使用状态寄存器的在本例中,为实现超时检查,使用状态寄存器的D0位作为位作为超时标志,超时判断的方法是设定一个查询打印机超时标志,超时判断的方法是设定一个查询打印机“忙闲忙闲”位位的次数,如果在这个数内,打印机始终处于的次数,如果在这个数内,打印机始终处于“忙忙”状态,则断状态,则断定为超时错误。该例流程图如图定为超时错误。该例流程图如图6.5所示。所示。 6.2 程序直接控制输入程序直接控制输入/输出方式输出

27、方式 源程序如下:源程序如下:DATASEGMENTPRINTDB Print a character string ,0DH,0AHRRORDBPrinter Error,0DH,0AH,$DATA ENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOVDS,AX MOV DX,37AH;打印机初始化程序;打印机初始化程序 MOV AL,08H;打印机联机;打印机联机 OUT DX,AL MOV CX,1000;维持初始化信号一段时间;维持初始化信号一段时间INIT: LOOP INIT MOV AL,0CH O

28、UT DX,AL ;结束初始化,保持联机;结束初始化,保持联机 MOVCX,10 ;打印;打印10行行6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 AGAIN:LEA BX,PRINT ;取待打印字符串首址;取待打印字符串首址NEXT: MOV DX,379H;取打印机状态寄存器地址;取打印机状态寄存器地址MOVSI,0FFFFH;设置查询次数;设置查询次数 WAIT: IN AL,DX;读入打印机状态寄存器;读入打印机状态寄存器 TEST AL,80H JNZ PRINTING ;打印机空闲,转去送数据;打印机空闲,转去送数据DECSI;查询次数减;查询次数减1JNZWAITJ

29、MPPERROR;超时,输出打印机出错;超时,输出打印机出错PRINTING:DECDX ;取数据端口号;取数据端口号 MOVAL,BX;取待打印字符;取待打印字符 OUTDX,AL ;送字符到数据端口暂存;送字符到数据端口暂存 MOVDX,37AH;选通打印机;选通打印机MOV AL,0DHOUT DX,AL ;置;置STB信号为信号为1 DEC AL6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 OUT DX,AL ;置;置STB信号为信号为0 CMP BX,0AH;判断一行结束否?;判断一行结束否? JZ NEWLINE;结束,转打印新一行;结束,转打印新一行 INC BX;

30、修改字符串地址指针;修改字符串地址指针 JMP NEXTNEWLINE:LOOP AGAINJMPEXITPRERROR:LEADX,ERROR;显示打印机出错信息;显示打印机出错信息MOVAH,09HINT21HEXIT:MOV AX,4C00H;返回操作系统;返回操作系统 INT 21HCODE ENDS END START6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 例例6.7 CPU要从三个设备轮流输入数据,设要从三个设备轮流输入数据,设PROC1、PROC2和和PROC3分别为设备分别为设备1、设备、设备2和设备和设备3的数据输入子程序;设三个设备的状的数据输入子程序;

31、设三个设备的状态寄存器的端口地址分别用态寄存器的端口地址分别用STAT1、STAT2和和STAT3表示,这三个状态寄表示,这三个状态寄存器的第存器的第5位是输入准备位,该位为位是输入准备位,该位为“1”表示数据准备好。试编制表示数据准备好。试编制CPU从从这三个设备轮流输入数据的程序段。这三个设备轮流输入数据的程序段。INPUT:INAL,STAT1;读取设备;读取设备1状态信息状态信息TESTAL,20H;检测第;检测第5位是否为位是否为1?JZDEV2;不为;不为1,转设备,转设备2CALLFAR PTR PROC1;读入设备;读入设备1的数据的数据DEV2:INAL,STAT2;读取设备

32、;读取设备2状态信息状态信息TESTAL,20H;检测第;检测第5位是否为位是否为1?JZDEV3;不为;不为1,转设备,转设备3CALLFAR PTR PROC2;读入设备;读入设备2的数据的数据DEV3:INAL,STAT3;读取设备;读取设备3状态信息状态信息TESTAL,20H;检测第;检测第5位是否为位是否为1?JZNO_INPUT;不为;不为1,转不输入,转不输入CALLFAR PTR PROC3;读入设备;读入设备3的数据的数据NO_INPUT:6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 查询输入查询输入/输出方式的优点是:可以用程序安排几个输入输输出方式的优点是

33、:可以用程序安排几个输入输出设备的先后次序,来设定设备的优先级,最先查询的设备,出设备的先后次序,来设定设备的优先级,最先查询的设备,其工作的优先级最高;另外通过联络可以实现其工作的优先级最高;另外通过联络可以实现CPU与外设间的与外设间的正确输入输出操作,从而使不同工作速度的外设可以和正确输入输出操作,从而使不同工作速度的外设可以和CPU协协调工作。但缺点是:为了知道外设的工作状态,要求调工作。但缺点是:为了知道外设的工作状态,要求CPU不断不断地查询外设的状态,当查询到的状态不是要求的状态时,地查询外设的状态,当查询到的状态不是要求的状态时,CPU则要等待再查询,直到所需状态的到来。在此期

34、间,则要等待再查询,直到所需状态的到来。在此期间,CPU不能不能进行其它操作,白白浪费了进行其它操作,白白浪费了CPU原本可以执行大量指令的时间。原本可以执行大量指令的时间。特别是当外设输入输出速度较低时特别是当外设输入输出速度较低时(如键盘、打印机等如键盘、打印机等),CPU用用于查询的时间要比完成一次输入输出操作的时间长得多,从而于查询的时间要比完成一次输入输出操作的时间长得多,从而造成了造成了CPU的极大浪费。为解决这个问题,可采用下节介绍的的极大浪费。为解决这个问题,可采用下节介绍的中断输入中断输入/输出方式。输出方式。6.2 程序直接控制输入程序直接控制输入/输出方式输出方式 中断输

35、入中断输入/输出方式就是为了提高输出方式就是为了提高CPU的工作效率而引入的工作效率而引入的,其基本思想是当的,其基本思想是当CPU需要输入输出数据时,先执行启动需要输入输出数据时,先执行启动外设工作的指令,然后外设工作的指令,然后CPU就继续执行原程序。如果是输入就继续执行原程序。如果是输入操作,当输入数据已存到外设接口的输入寄存器时,或输出操作,当输入数据已存到外设接口的输入寄存器时,或输出操作,当外设接口输出寄存器已空闲时,就由外设向操作,当外设接口输出寄存器已空闲时,就由外设向CPU发发出中断请求。出中断请求。CPU收到外设中断请求后,就暂停原来正在执收到外设中断请求后,就暂停原来正在

36、执行的程序行的程序(即实现中断即实现中断),转去执行输入,转去执行输入(或输出或输出)处理程序处理程序(即中即中断处理程序断处理程序)。在完成所需要的输入。在完成所需要的输入(或输出或输出)处理操作后,就处理操作后,就返回原程序从被中断处接续执行。这种输入返回原程序从被中断处接续执行。这种输入/输出方式不是输出方式不是CPU去查询外设的状态,而是当外设完成一次输入去查询外设的状态,而是当外设完成一次输入(或输出或输出)操操作后,主动向作后,主动向CPU发出中断请求,请求发出中断请求,请求CPU为它服务。这样为它服务。这样就把外设忙期间的时间让给就把外设忙期间的时间让给CPU去做其它工作,因此极

37、大地去做其它工作,因此极大地提高了提高了CPU的工作效率。这种方式还允许的工作效率。这种方式还允许CPU同时启动多个同时启动多个外设,即允许外设,即允许CPU与多个外设同时工作。与多个外设同时工作。6.3 中断输入中断输入/输出方式输出方式 6.3.1 8086中断系统概述中断系统概述 中断控制是现代计算机发展中的一种重要技术,它的出现原是为克服对外中断控制是现代计算机发展中的一种重要技术,它的出现原是为克服对外设设I/O接口采用程序查询方式所带来的接口采用程序查询方式所带来的CPU低效率的弊端,故最初的中断一律低效率的弊端,故最初的中断一律是对外设而言的,称之为外中断是对外设而言的,称之为外

38、中断(即硬件中断即硬件中断)。但随着计算机系统结构的不断。但随着计算机系统结构的不断复杂及应用技术日益提高,中断的使用范围也随之扩大,出现了另外两种中复杂及应用技术日益提高,中断的使用范围也随之扩大,出现了另外两种中断类型:内中断和软中断,这就构成了一个完整的计算机中断系统。断类型:内中断和软中断,这就构成了一个完整的计算机中断系统。1中断源类型中断源类型 所谓中断是一种使所谓中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。中止正在执行的程序而转去处理特殊事件的操作。这些引起中断的事件称之为中断源。中断源可以来自于外部设备这些引起中断的事件称之为中断源。中断源可以来自于外部设备(

39、如输入如输入/输出输出请求请求)称为外中断。也可以来自于内部硬件出错称为外中断。也可以来自于内部硬件出错(如内存奇偶校验错、协处如内存奇偶校验错、协处理器异常等理器异常等);或者为处理器遇到某些特殊事件;或者为处理器遇到某些特殊事件(如如INT N指令、除数零、运算指令、除数零、运算溢出或单步执行等溢出或单步执行等)引起的,通常前者中断源引发的中断称之为不可屏蔽中断引起的,通常前者中断源引发的中断称之为不可屏蔽中断(NMI);后者中断源引发的中断称为软中断,为区别外中断,这里统称为内中;后者中断源引发的中断称为软中断,为区别外中断,这里统称为内中断。断。8086CPU共支持共支持256个中断,

40、个中断,CPU为识别每一种中断源,将它们从为识别每一种中断源,将它们从0到到255编号,赋以一个中断类型号编号,赋以一个中断类型号N,简称为中断类型。,简称为中断类型。8086CPU的中断源如图的中断源如图6.6所示,图中引线旁标示的是系统分配的中断类型号。所示,图中引线旁标示的是系统分配的中断类型号。6.3 中断输入中断输入/输出方式输出方式 1)不可屏蔽中断()不可屏蔽中断(NMI) 不可屏蔽中断是通过不可屏蔽中断是通过NMI信号端信号端(中断类型号为中断类型号为2)向向CPU发出中断请求发出中断请求的,该请求不受中断标志位的,该请求不受中断标志位IF的影响,所以该中断主要用于一些紧急的事

41、的影响,所以该中断主要用于一些紧急的事件或故障处理。比如:存储器的奇偶效验检测或电源故障等。件或故障处理。比如:存储器的奇偶效验检测或电源故障等。 2)可屏蔽中断)可屏蔽中断 可屏蔽中断是外部中断,是通过可屏蔽中断是外部中断,是通过INTR信号端向信号端向CPU发出中断请求的,发出中断请求的,该请求受中断标志位该请求受中断标志位IF的影响。当的影响。当IF设置为设置为1时,时,CPU便可接受外部中断请便可接受外部中断请求,此时称为开中断;当求,此时称为开中断;当IF清为清为0时,时,CPU不接受外部中断请求,此时称为不接受外部中断请求,此时称为关中断。关中断。 由图可以看出,外部中断是通过由图

42、可以看出,外部中断是通过8259A可编程中断控制器控制,可使可编程中断控制器控制,可使8个外部中断源通过个外部中断源通过INTR向向CPU发出中断请求。标志寄存器中的发出中断请求。标志寄存器中的IF位只是控位只是控制是否允许制是否允许CPU响应外部中断,而不控制外部中断源是否可以向响应外部中断,而不控制外部中断源是否可以向CPU发出发出中断请求。这个功能可由中断请求。这个功能可由8259A的的 8位中断屏蔽寄存器来实现,它的端口地位中断屏蔽寄存器来实现,它的端口地址为址为21H,用来控制,用来控制8个外部中断源是否允许向个外部中断源是否允许向CPU申请中断,屏蔽寄存器申请中断,屏蔽寄存器如图如

43、图6.7所示。当某位为所示。当某位为0时,允许外部设备中断;当为时,允许外部设备中断;当为1时,禁止时,禁止(屏蔽屏蔽)外部外部设备的中断。因此,某个外设要想实现设备的中断。因此,某个外设要想实现CPU响应其中断请求,必须满足响应其中断请求,必须满足IF=1和相应位为和相应位为0这两个条件。这两个条件。6.3 中断输入中断输入/输出方式输出方式 例如:允许键盘中断,可用下列指令实现:例如:允许键盘中断,可用下列指令实现:STI;开中断;开中断INAL,21H ;读取中断屏蔽寄存器;读取中断屏蔽寄存器ANDAL,11111101B;键盘中断允许位置;键盘中断允许位置0OUT21H,AL;写入中断

44、屏蔽寄存器;写入中断屏蔽寄存器 3)内中断)内中断 内中断不受中断标志位的影响,一旦出现这种中断,内中断不受中断标志位的影响,一旦出现这种中断,CPU就响应这一中断并执行相应处理程序。就响应这一中断并执行相应处理程序。 (1)INT指令引起的内中断指令引起的内中断 当当CPU执行完一条执行完一条INT N指令后,立即产生中断并调用系统指令后,立即产生中断并调用系统中相应的中断处理程序来完成中断功能。中相应的中断处理程序来完成中断功能。N为中断类型号,系统为中断类型号,系统可提供可提供256个中断类型号,除系统占用的类型号以外,用户可以个中断类型号,除系统占用的类型号以外,用户可以利用保留的类型

45、号来扩充新的中断处理功能。利用保留的类型号来扩充新的中断处理功能。6.3 中断输入中断输入/输出方式输出方式 (2)INTO中断中断 该中断为溢出中断,其类型号为该中断为溢出中断,其类型号为4,当程序执行过程中,遇到,当程序执行过程中,遇到INTO指指令时,且此时溢出标志令时,且此时溢出标志OF=1,则产生中断并转入溢出中断处理程序。该,则产生中断并转入溢出中断处理程序。该处理程序只是给出一个出错信息,在处理程序结束时,不返回原程序而返处理程序只是给出一个出错信息,在处理程序结束时,不返回原程序而返回系统。若遇到回系统。若遇到INTO指令,但此时指令,但此时OF=0,则,则CPU继续执行原程序

46、。例如继续执行原程序。例如下面的指令用来测试加法的溢出:下面的指令用来测试加法的溢出:ADDAX,VALUEINTO ()除法错误中断()除法错误中断 该中断的类型号为,当除数为零或商超过了寄存器所能表达的范围该中断的类型号为,当除数为零或商超过了寄存器所能表达的范围时,则时,则CPU自动产生自动产生0号中断,并给出该中断的入口地址。用户可编写相号中断,并给出该中断的入口地址。用户可编写相应的中断处理程序,以解决除法溢出问题。应的中断处理程序,以解决除法溢出问题。(4)单步中断)单步中断 当把单步标志位当把单步标志位TF置为置为1时,则在每执行完一条指令后,时,则在每执行完一条指令后,CPU自

47、动产自动产生类型号为生类型号为1的中断的中断单步中断。在中断处理程序的控制下,给出有关寄单步中断。在中断处理程序的控制下,给出有关寄存器的内容和各状态标志位的状态。使用单步中断可以一条指令一条指令存器的内容和各状态标志位的状态。使用单步中断可以一条指令一条指令地跟踪程序的运行,这在调试程序时非常有用。地跟踪程序的运行,这在调试程序时非常有用。6.3 中断输入中断输入/输出方式输出方式 2中断优先级中断优先级1)中断优先级)中断优先级 在外中断、内中断中有多个中断源,为解决同时有多个中断源向在外中断、内中断中有多个中断源,为解决同时有多个中断源向CPU发出中断请求时的响应问题,发出中断请求时的响

48、应问题,CPU规定了中断源的优先级,中断源的优先规定了中断源的优先级,中断源的优先顺序为:顺序为: 除法错误除法错误INTOINT NNMIINTR单步中断。单步中断。 其中:在其中:在INTR(可屏蔽中断可屏蔽中断)中,有中,有8个中断源,分别命名为个中断源,分别命名为IRQ0IRQ7,系统默认,系统默认IRQ0优先级最高,以后依次降低,优先级最高,以后依次降低,IRQ7最低。由于这最低。由于这8个中断源受个中断源受8259A可编程中断控制器控制,因此可编程中断控制器控制,因此IRQ0IRQ7可由可由8259A中中断命令寄存器改变它们的优先级。断命令寄存器改变它们的优先级。 当有多个中断源同

49、时发出中断申请时,当有多个中断源同时发出中断申请时,CPU将根据上述规定的优先次将根据上述规定的优先次序,首先响应优先级最高的中断请求,在完成该中断处理程序后,再响应序,首先响应优先级最高的中断请求,在完成该中断处理程序后,再响应次高优先级的中断请求。以优先级顺序逐个处理各中断源的中断请求。次高优先级的中断请求。以优先级顺序逐个处理各中断源的中断请求。6.3 中断输入中断输入/输出方式输出方式 2)8259A中断命令寄存器中断命令寄存器8259A中断命令寄存器的端口地址为中断命令寄存器的端口地址为20H,各位如图,各位如图6.8所示。所示。 例如:例如:IRQ0IRQ7为正常优先级顺序,现要求

50、为正常优先级顺序,现要求IR4为最低级中断请求,则为最低级中断请求,则向中断命令寄存器发送如下命令:向中断命令寄存器发送如下命令:MOVAL,11100100BOUT20H,AL命令执行完后,优先级的顺序为:命令执行完后,优先级的顺序为:IRQ5,IRQ6,IRQ7,IRQ0,IRQ1,IRQ2,IRQ3,IRQ46.3 中断输入中断输入/输出方式输出方式 (3)EOI:中断结束位,当:中断结束位,当EOI=1时,当前正在处理的中断请求被清除。所时,当前正在处理的中断请求被清除。所 以在每个中断处理程序结束时,必须把中断结束位置以在每个中断处理程序结束时,必须把中断结束位置1,这表明该中断处理

51、,这表明该中断处理程序结束,并允许该中断源重新发出中断请求。否则,该中断源不能再发出程序结束,并允许该中断源重新发出中断请求。否则,该中断源不能再发出中断请求,同时也会屏蔽掉对以后同级或低级中断的处理。当然在必要时候,中断请求,同时也会屏蔽掉对以后同级或低级中断的处理。当然在必要时候,在中断处理程序中也可利用在中断处理程序中也可利用EOI位清除当前的中断请求,使得在中断处理的位清除当前的中断请求,使得在中断处理的过程中又能响应同级或低级中断请求。清除硬件中断用如下命令:过程中又能响应同级或低级中断请求。清除硬件中断用如下命令:INAL,20HORAL,00100000BOUT20H,AL3)中

52、断嵌套)中断嵌套 所谓中断嵌套是指计算机正在执行一个中断处理程序时,有另一个优先所谓中断嵌套是指计算机正在执行一个中断处理程序时,有另一个优先级更高的中断源提出中断请求,这时计算机会暂时终止当前正在执行的级别级更高的中断源提出中断请求,这时计算机会暂时终止当前正在执行的级别较低的中断源的中断处理程序,转去处理高优先级的中断处理程序,待处理较低的中断源的中断处理程序,转去处理高优先级的中断处理程序,待处理完毕后,再返回到被中断了的中断处理程序继续执行的过程。完毕后,再返回到被中断了的中断处理程序继续执行的过程。6.3 中断输入中断输入/输出方式输出方式 80X86没有规定中断嵌套的层次,但在实际

53、使用时,多重没有规定中断嵌套的层次,但在实际使用时,多重的中断嵌套要受到堆栈容量的限制,所以在编写中断程序时,的中断嵌套要受到堆栈容量的限制,所以在编写中断程序时,一定要考虑有足够的堆栈单元来保存多次中断的断点及各寄存一定要考虑有足够的堆栈单元来保存多次中断的断点及各寄存器的内容。器的内容。 为实现中断嵌套,需要注意的是:在每一个中断处理程序为实现中断嵌套,需要注意的是:在每一个中断处理程序的开始部分要用的开始部分要用STI指令将指令将IF位置位置1开中断,这样计算机在执开中断,这样计算机在执行该中断处理程序过程中,可以响应比该中断源优先级更高的行该中断处理程序过程中,可以响应比该中断源优先级

54、更高的中断源的中断请求。若在中断处理程序中发出中断结束命令,中断源的中断请求。若在中断处理程序中发出中断结束命令,即即EOI位置位置1,则计算机在执行该中断处理程序过程中,在发出,则计算机在执行该中断处理程序过程中,在发出中断结束命令后,还可以响应同级或低优先级中断源的中断请中断结束命令后,还可以响应同级或低优先级中断源的中断请求。求。6.3 中断输入中断输入/输出方式输出方式 例例6.8 在正常优先级方式下,假设在主程序执行过程中,在正常优先级方式下,假设在主程序执行过程中,IR2和和IR4同同时发出中断请求,而后时发出中断请求,而后IR1申请中断,最后申请中断,最后IR3的中断请求也到达。

55、其中断的中断请求也到达。其中断处理顺序如下:处理顺序如下: 由于由于IR2比比IR4中断优先级高,所以中断优先级高,所以CPU首先响应首先响应IR2,从主程序转,从主程序转去处理去处理IR2的中断处理程序。进人的中断处理程序。进人IR2中断处理程序后,立即将中断处理程序后,立即将IF置为置为1。当当IR1的中断请求到达后,因的中断请求到达后,因IR1的优先级高于的优先级高于IR2,CPU就立即中止执行就立即中止执行IR2的程序,转去执行的程序,转去执行IR1的中断处理程序。在的中断处理程序。在IR1处理程序中,由指令发处理程序中,由指令发出了出了EOI命令,结束了命令,结束了IR1的中断请求。

56、返回的中断请求。返回IR2处理程序后,同样由于发处理程序后,同样由于发出出EOI命令清除了命令清除了IR2 的中断请求,所以在较低优先级的中断请求的中断请求,所以在较低优先级的中断请求IR4到达到达后,即转向处理后,即转向处理IR4的中断请求。在的中断请求。在IR4处理程序的执行过程中,处理程序的执行过程中,IR3的中的中断请求到达,当判断断请求到达,当判断 IF已被置为已被置为 1,则又中断了,则又中断了IR4的程序,转去执行的程序,转去执行IR3的中断处理程序。在的中断处理程序。在IR3程序中,也发出了开中断指令程序中,也发出了开中断指令(STI)和中断结束命和中断结束命令令(EOI),最

57、后,最后IRET指令使其返回到指令使其返回到IR4程序,程序,IR4的程序在返回的程序在返回IR2的程的程序之前也发出了序之前也发出了EOI命令,结束了命令,结束了IR4的中断请求。的中断请求。IR2中断请求在前面已中断请求在前面已被清除,所以被清除,所以IR4执行完后,返回执行完后,返回IR2继续执行直到返回主程序。各中断处继续执行直到返回主程序。各中断处理程序的执行顺序如图理程序的执行顺序如图6.9所示。所示。6.3 中断输入中断输入/输出方式输出方式 6.3.2中断向量表中断向量表1中断向量表中断向量表 在在8086中断系统中,为每种中断都安排了一个中断类型号中断系统中,为每种中断都安排

58、了一个中断类型号(类型类型号为号为00FFH),每种类型的中断都有相应的中断处理程序,来,每种类型的中断都有相应的中断处理程序,来完成中断的任务。为了方便管理中断处理程序,系统把所有的完成中断的任务。为了方便管理中断处理程序,系统把所有的中断处理程序的入口地址都集中在一起,构成一个中断向量表。中断处理程序的入口地址都集中在一起,构成一个中断向量表。每个入口地址占每个入口地址占4个字节,高个字节,高2个字节存放中断处理程序的段基个字节存放中断处理程序的段基址,低址,低2个宇节存放中断处理程序的段内偏移地址。各中断处理个宇节存放中断处理程序的段内偏移地址。各中断处理程序的入口地址是按中断类型号的顺

59、序存放在中断向量表中,程序的入口地址是按中断类型号的顺序存放在中断向量表中,因此每类中断向量的地址可由中断类型号乘以因此每类中断向量的地址可由中断类型号乘以4计算出来。例如:计算出来。例如:当类型号当类型号8中断发生时,则系统从中断向量表地址中断发生时,则系统从中断向量表地址48=0010H中中取得取得8号类型的中断处理程序的入口地址,分别送入号类型的中断处理程序的入口地址,分别送入IP和和CS寄存寄存器中,器中,CPU就可以转入相应的中断处理程序。就可以转入相应的中断处理程序。256个中断处理程个中断处理程序的入口地址共占用序的入口地址共占用1024个字节空间,位于存储器个字节空间,位于存储

60、器0000:0000H0000:03FFH地址空间,中断向量表如图地址空间,中断向量表如图6.10所示。所示。6.3 中断输入中断输入/输出方式输出方式 表表6.2列出了列出了80 x86各类型中断在中断向量表中的地址。各类型中断在中断向量表中的地址。2存取中断向量存取中断向量 我们知道,中断向量表是用来存放中断程序的入口地址的,当某类型我们知道,中断向量表是用来存放中断程序的入口地址的,当某类型中断请求被中断请求被CPU响应后,响应后,CPU就到中断向量表中取得该类型中断的中断处就到中断向量表中取得该类型中断的中断处理程序的入口地址,分别送入理程序的入口地址,分别送入IP和和CS寄存器中,即

温馨提示

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

评论

0/150

提交评论