第8章 输入输出及中断系统Word文件下载.docx
- 文档编号:19742537
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:12
- 大小:26.85KB
第8章 输入输出及中断系统Word文件下载.docx
《第8章 输入输出及中断系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《第8章 输入输出及中断系统Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
(7)联络控制逻辑
用于产生/接受CPU和外设之间数据传送的同步信号。
总线联络信号包括微处理器端的中断请求和响应,以及外设端的准备就绪和选通等控制与应答信号。
1.1.2计算机的应用8.1.2信息交换方式
为了实现CPU与I/O设备之间的数据传送,通常采用以下五种I/O传送方式:
程序传送方式、中断传送方式、直接存储器存取(DMA)方式、通道方式和外围处理机方式。
1.程序传送方式
它包括无条件传送方式和查询传送方式。
在这种传送方式中,微型机与外部设备之间的数据传送由程序来控制,这是最简单的传送方式。
无条件传送方式是指在外部控制过程的定时是固定的或是已知的条件下,进行数据传送的方式。
在这种传送方式中,外设总是被认为处于“待命”状态,可以根据其固定的或已知的定时,将I/O指令插在程序中。
当程序执行至该I/O指令时,就开始发送或接收数据。
查询式I/O传送或称异步传送方式,或称条件传送方式。
查询式I/O操作是由微处理机驱动一程序来完成的,所以又把查询方式称为程序控制方式。
它的特点是外部设备受微型机存储器中程序的支配,微处理机控制所有的传送过程。
使用这种技术时,通常都在接口电路中设有供CPU查阅的状态输入寄存器,它的置位表示设备发生了某种情况,需要微处理机加以注意。
采用查询I/O方式,微型机在执行一个I/O操作之前,必须先对外围设备的状态进行测试。
完成一次数据传送的步骤如下。
测试所选择的外围设备的现行状态。
根据该设备的状态进行条件转移,如该设备处于“忙”状态,则程序转至重复测试设备状态循环等待;
若该设备已准备“就绪”,便发出一条I/O指令,执行数据传送(输入或输出)。
数据传送结束后,使该设备暂停。
查询技术本质上是用软件进行定时与等待信息的方法。
2.中断传送方式
中断概念开始是为使计算机具有实时处理能力而引入的。
在实时控制系统中,产生过程中的信息变化是随机的,而且要求能快响应处理,这就导致了中断处理技术的产生。
中断控制方式的特点是允许CPU和I/O设备并行工作,而仅当I/O设备数据准备就绪之后,才向CPU发出中断请求的信号。
此时,CPU才暂停执行主程序,而转去执行为外围设备服务的中断服务程序,待处理完毕之后,又返回到被中断了的主程序继续执行。
这就充分发挥了微型计算机的高速效能。
3.直接存储器存取(DMA)方式
这种传送方式是由外围设备(或DMA控制)来控制的,它能直接在外围设备与存储器之间进行数据传送,而不需要CPU的干预,适用于进行大量的高速数据传送。
4.通道方式
DMA方式的常见已经减轻了CPU对I/O操作的控制,使得CPU的效率有显著的提高,而通道的出现则进一步提高了CPU的效率。
这是因为,CPU将部分权力下放给通道。
通道是一个具有特殊功能的处理器,某些应用中称为输入输出处理器(IOP),它可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。
这种方式大大提高了CPU的工作效率。
5.外围处理机方式
外围处理机(PPU)方式是通道方式的进一步发展。
由于PPU基本上独立于主机工作,它的结构更接近一般处理机,甚至就是微小计算机。
在一些系统中,设置了多台PPU,分别承担I/O控制、通信、维护诊断等任务。
从某种意义上来讲,这种系统已变成分布式的多机系统。
I/O端口寻址方式
为了区分不同的端口,我们对端口进行进行了编码,每个端口的编码都是唯一的,我们把它称为端口地址。
微处理器进行I/O操作时,对I/O接口的寻址方式与前面所提及的存储器寻址方式相似。
即必须完成两种选择:
一是选择出选中的I/O接口芯片(称为片选);
二是选择出该芯片中的某一寄存器(称为字选)。
通常有两种I/O接口结构:
一种是独立的I/O结构;
另一种是存储器映象I/O结构。
与之对应的有两种I/O结构寻址方式。
1.独立的I/O寻址方式
独立的I/O寻址方式也称作标准的I/O寻址方式,或称为端口(port)寻址方式。
这种寻址方式有以下三个特点。
(1)I/O设备的端口地址空间与存储器地址空间是完全分开、相互独立的。
(2)CPU使用分开的控制信号来区分是对存储器寻址还是对I/O寻址。
(3)微处理器对I/O设备的管理是使用专门的输入(IN)和输出(OUT)指令来实现数据的传送,而输入/输出数据数据通道则是采用公共的总线结构。
2.存储器映象I/O寻址方式
存储器映象I/O寻址方式又称为存储器对应于输入/输出寻址方式,或存储器编码的I/O寻址方式。
这种寻址方式是将外围设备的一个端口作为存储器的一个单元来对待,故每一个外设端口占用存储器的一个地址单元。
这种寻址方式是计算机科学发展中,硬件的最优化与指令系统的简单化的设计思想在输入/输出系统中的一个反映,此方式和独立的I/O寻址方式一样。
8.2.2I/O端口地址分配
以IBM-PC系列为例来分析I/O端口地址分配情况。
1.I/O接口硬件分类
按照I/O设备的配置情况,I/O接口的硬件分成两类:
(1)系统板上的I/O芯片
这些芯片大多都是可编程的大规模集成电路,完成相应的接口操作,如定时/计数器、中断控制器、DMA控制器、并行接口等。
(2)I/O扩展槽上的接口控制卡
这些控制卡(适配器)是由若干个集成电路按一定的逻辑组成的一个部件,如软驱卡、硬驱卡、图形卡、声卡、打印卡、串行通信卡等。
2.I/O端口地址分配
不同的微机系统对I/O端口地址的分配是不同的。
PC微机是根据上述I/O接口的硬件分类,把I/O空间分成两部分。
3.I/O端口地址选用的原则
为了避免端口地址发生冲突,在选用I/O端口地址时要注意:
(1)凡是被系统配置所占用了的地址一律不能使用;
(2)未被占用的地址(计算机厂家申明保留的地址除外),用户可以使用;
(3)一般,用户可使用300~31FH地址,为了避免与其他用户开发的插板发生地址冲突,最好采用地址开关。
8.3.1中断的基本概念
计算机在执行正常程序的过程中,由于外部或内部的种种原因,将会出现一些异常的情况和特殊要求,这就需要计算机暂时中断正在执行的程序,去处理临时产生的事情,即转去执行预先编好的中断服务程序,等处理完毕后再返回执行原来的程序,这个过程称为中断。
它由计算机中的中断系统来完成。
中断系统可以控制CPU同时执行好几道程序,提高利用率。
在中断系统当中要着重考虑以下五个方面的内容:
1.中断源
能发出中断申请的来源(事件)称为中断源,一般有以下几种中断源:
(1)一般的输入、输出外围设备,如键盘、行打印机、纸带输入机、卡片读入机、穿孔机等的中断请求。
(2)数据通道中断源,也称直接存储器存放(DMA)操作,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。
(3)计算机内部故障引起的中断,如电源掉电、运算结果溢出、存储出错等机内事件引起的中断。
(4)在实时控制系统中,由实时体控制的定时输入与输出。
(5)在程序调试中由操作人员所设置的中断,如断点中断、单步中断等。
当CPU响应外部设备的中断请求后,必须要识别出是哪一台外设请求中断,然后再转入对应于该设备的中断服务程序。
CPU识别请求中断的设备称为中断源的识别。
利用程序来查询设备的请求中断状态,从而确认出应该服务的设备号,并转入相应设备号的中断服务程序,这种方法称为软件查询技术识别中断源。
CPU利用识别中断指令,可识别出硬设备地址转入相应的中断服务程序。
因此,回送的设备地址称为中断向量地址,它指出CPU应该转入哪个中断服务程序,这称为硬件识别中断源。
它比软件查询技术识别中断源的方法简单,而且速度快,在实时控制系统中被广泛采用。
2.中断分类
按中断处理方式,中断可分为以下几类:
(1)简单中断,即采用周期窃用的方法来执行中断服务,有时也称数据通道或DMA。
(2)程序中断,它不是窃用中央处理机的周期来进行中断处理,而是中止现行程序的执行,转去执行中断服务程序。
按中断产生的方式,中断可分为:
(1)自愿中断,即通过自陷指令引起的中断,或称软件中断。
(2)强迫中断,这是一种随机发生的实时中断。
按中断产生的位置,中断可分为:
(1)外部中断,或称外部硬件实时中断,它由发至CPU某一引脚上的信号引起。
(2)内部中断,或称软件指令中断,是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断。
3.中断优先权
一般而言,一个系统中有多个中断源。
当在某个时刻出现两个或多个中断源提出中断请求时,中断系统应能判别优先权最高的中断源,并按优先权的高低决定响应的顺序,CPU首先响应优先权最高的中断请求。
在处理完优先权最高的请求以后,再去响应其它较低级的中断请求。
中断源的优先权是根据它们的重要性事先规定好的。
4.中断嵌套
当CPU响应某一中断源的请求,并正在执行中断处理时,若有优先权级别更高的中断源发出中断申请,则CPU要能中断正在执行的中断服务程序,响应高级中断。
在高级中断处理完后再返回继续进行被中断的中断服务程序。
即能实现中断处理程序的嵌套。
如果一个系统中有三个中断源,优先权的安排为:
中断1为最高,中断3为最低。
5.中断与返回
当某中断源发出中断请求时,若CPU允许响应这个中断,则CPU在现行的指令执行完后,把断点(即下一条应执行的指令的地址)及各个寄存器的内容和状态标志字压入堆栈(保护断点现场),然后转入需要处理的中断服务程序,进行中断处理。
同时,清除中断请求触发器。
当中断处理响应完后再把被保留的断点及各个寄存器的内容和状态标志字从堆栈中弹出。
即恢复断点与现场,使CPU返回到断点,继续执行原来的程序。
8.3.2中断向量表
中断向量(矢量)表也称中断指示表。
中断向量表放在存储单元地址的最低部位0000H到003FFH,占有1K字节的存储空间。
中断向量表分成256组(类型码),每组由两个字(即4个字节)组成一个双字长的指针。
每个双字指针指示一种中断类型,最多能识别256种不同类型的中断。
通过这张中断向量表产生出各个中断服务程序的入口地址。
在双字长指针的高地址中存放的字是中断服务程序入口地址所在的代码段的基址(CS),低地址字是中断服务程序入口地址相对于段基址的补偿值(IP)。
CPU通过CS和IP的值得到一个20位的地址,它就是中断服务程序的实际入口地址。
计算方法同求一个存储器单元实际地址的方法一样,就是将CS基址左移4位,然后加上IP的补偿值。
每个中断向量具有一个相应的中断类型号码,由中断类型号码确定在中断向量表中的中断向量。
中断类型号码乘4,将给出中断向量表中的中断向量入口第一字节的绝对地址(因为每个中断向量占4个字节)。
举例说明,若中断类型号码为3,它指出中断向量表的第4个入口,则这个向量的第一字节的地址为:
3类型码×
4=1210=00001100B=00CH
若类型3中,我们安排放置的CS=1E00H和IP=0A00H,则它们形成的服务程序的入口地址为1EA00H。
CPU一旦响应中断类型3,则将转去执行从地址1EA00H(1EA00H=10H*CS+IP=10H*1E00H+0A00H)开始的类型3的中断服务程序。
8.3.3 中断处理过程
首先,中断请求信号由外部设备发生并送至8086的INTR引脚上。
CPU是否响应决定于CPU内部的IF标志(注意与外设接口电路中的中断屏蔽触发器的区别,不要混同了,可以通过设置外设接口中的中断屏蔽触发器为1或为0来控制是否让外设发出中断请求,这是为了实现两级屏蔽),如果这个标志为0,则在IF变成1以前CPU不会识别中断;
当IF=1并出现INTR请求信号时,CPU在完成正在执行的指令后,便开始执行如下的中断过程:
(1)建立中断类型号码N。
CPU将通过其INTA引脚向该设备接口发响应信号,并启动中断过程。
这个响应信号将使发出中断请求信号的接口把说明中断类型的一个字节(中断类型号码N)通过数据总线送给CPU;
(2)把IP,CS和PSW的当前内容依顺序压入堆栈,进行保护;
(3)清除IF和TF标志;
(4)把存储单元4*N的内容放入IP,把4*N+2的内容放入CS。
8.3.48259A中断控制器
8259A是一个可编程的中断控制器,应用在实时的、以中断方式进行监控的计算机系统中。
用一片8259A可以管理8个等级的中断申请。
并可再经级联扩展多至8片8259A,使得中断等级可扩展多至64级。
8259A可以作为一个I/O外围器件,用系统软件编程,它所具有的多种优先权方式可以通过主程序在任何时候进行改变或重新组织。
这意味着可以按照全系统的外围情况和要求,设计出一个完整的中断结构,用来实现优先管理、中断屏蔽以及自动中断矢量转移。
它几乎可以适合于任何一种中断控制的结构,因而得到了广泛的应用。
1.8259A引脚及功能
8259A为28脚双列直插式封装的器件。
Vcc(28):
输入,=5C电源。
GND(14):
输入,地。
D7~D0(4~11):
输入或输出,双向数据总线,8259-A通过该引脚与CPU通信,传送命令、状态和中断矢量信息。
较大的系统中需接总线驱动器,在小系统中可直接连接之。
CS
(1):
输入,读,用于表示在访问8259A。
该引脚通过地址译码器连接至地址总线。
WR
(2):
输入,写,通知8259A接收数据总线上的数据,并用这些数据设置命令字。
RD(3):
输入,读,用于通知8259A将IMR,ISR或IRR寄存器。
INT(17):
输出,中断申请。
当8259A接到从外设经IR脚送来的一个有效的中断请求时,将从这脚输出高电平,并对CPU提出中断申请。
该脚连到CPU的INTR引脚。
IR0~IR7(18~25):
输入,中断请求。
接口或其它8259A(称为从控制器)上接收异步的中断请求。
在边沿触发方式中,IR输入应保持高电平。
INTA(26):
输入,中断响应,用来通知8259A中断申请已被响应,使其将中断矢量送到数据总线上。
8259A认为中断响应信号由两个负脉冲组成,因而它能与8086/8088系统兼容。
A0(27):
输入,地址线。
这个脚与CS,WR或RD联合使用,用于表示正在访问8259A的哪个端口。
8259A从中辨认出CPU是要写命令还是要读状态。
典型的接法是连到CPU的A0地址线(8080A或8085)上,对于8086则为A1地址线。
因为8259A只有8根数据引脚,而8086总是从其16位数据总线的低8位输入中断指示字,所以8086与8259A的所有数据传送只能用数据总线的低位进行。
要保证所有传送都用总线的低位,最简单的方法是将A0与8086总的A1相连接,使用两个相邻的偶数地址且第一个地址可被4除尽,所以编程时要特别注意配合。
系统中每块8259A须在I/O地址空间中保留两个地址。
SP/EN(16):
输入或输出,为双功能脚。
在缓冲方式中,该引脚被用作输出线,控制总线缓冲器的接收或发送;
在非缓冲方式中,则作为输入线,确定该8259A是主控制器(SP/EN=1)还是从控制器(SP/EN=0)。
CAS0~CAS2(12,13,15):
输入或输出,级联总线。
用于区分特定的从控制器件。
8259A作为主控制时,该总线为输出,它还可控制多至8个辅从的8259A,8259A作为辅从时,它则为输入。
2.8259A工作过程
第一步:
当中断请求线(IR0~IR7)上有信号输入时,就把中断请求寄存器IRR相应的位置1。
第二步:
当IRR的一位置1后,就会与IMR中相应的屏蔽位进行比较,如该屏蔽位为0,则请求被发送给优先级分析器;
如该屏蔽位为1,则封锁该请求。
第三步:
当一个中断请求被输入优先级分析器后,将由优先权分析器判定其优先权,然后向CPU发中断申请,INT脚变高(INT联到8086的INTR)。
第四步:
CPU的INTR引脚为异步状态接收,也就是它可以在任何时间(与时钟无关)接收中断。
在软件控制下利用STI指令(中断置位)或CLI(中断复位)指令可分别将CPU的“中断开放标志位”IF置位或复位,可以做到接受或不理睬在INTR上的中断申请。
第五步:
假定CPU中的IF标志为1,则CPU在完成当前指令的即进入中断响应周期,这个中断响应周期将标志寄存器入栈,然后清除IF标志,关闭了中断。
再将代码段寄存器和指令指针也入栈(这是为了从中断服务程序返回),然后CPU发出第二个INTA脉冲通知8259A,说明8086已经允许了它的中断请求。
若8086用于“最小方式”,则INTA脉冲信号为8086
INTA引脚上的信号;
若8086用于“最大方式”时,则8086
LOCK脚在中断响应序列执行期间变为低电平。
LOCK信号用来指示其它系统总线控制器:
当中断响应序列到来时不要获取系统总线控制,一个“HOLD”请求在LOCK变低时不会被响应。
第六步:
8259A收到第一个INTA负脉冲后,将禁止IRR锁存器,使IRR不受IR7~IR0进一步变化的影响,这种状态一直保持到第二个INTA脉冲结束。
第一个INTA脉冲还使ISR的某一位置位,并清除相应的IRR位。
第二个INTA脉冲使ICW2当前内容被放到D7~D0上,CPU用该字节确定中断型号。
此后CPU将按照这个指定的中断类型号中的内容去执行所对应的中断程序。
注意:
若ICW4的中断自动结束位(AEOI)为1,则第二个INTA脉冲结束时,ISR中被第一个INTA脉冲置位的位被清除,否则要等到送内含中断结束(EOI)命令的OCW2后方能清除ISR中的该位。
第七步:
当进入中断服务程序时,那些主程序和子程序都要用到的寄存器应当保存入栈,最好的方法是立刻“PUSH”每个用到的寄存器入栈。
当中断服务程序完成后,再以相应的反次序“POP”每个寄存器出栈。
第八步:
一旦中断服务程序完成,就应用IRET(中断返回)指令使CPU再回到主程序。
IRET指令就会自动弹出中断前的指令指针,使主程序恢复到被中断之处,并且恢复中断前与中断服务变化无关的标志状态(包括IF标志的状态)。
而中断也自动放开。
3.8259A的编程
因为8259A是可编程的中断控制器,所以它的操作是用软件通过命令进行控制的。
8259A的编程命令字有两类:
一是初始化命令字(ICW),二是操作命令字(OCW)。
相应的8259A的控制部分有一些可编程的位,它们分布在7个8位寄存器中。
这些寄存器分成两组,一组用作存ICW,另一组存OCW。
当计算机刚开机时,用初始化程序设定ICW,即由CPU按次序发送2~4个不同格式的ICW,用来建立起8259A操作的初始状态,此后的整个工作过程中该状态保持不变。
相反操作命令字(OCW)用于动态控制中断处理,是在需要改变或控制8259A操作时发送的。
当发出ICW或OCW时,CPU中断申请脚INTR应关闭(使用CLI关中断指令)。
8.3.5DOS系统功能调用
对数据的输入输出,大多数现代计算机都有两种资源可供使用:
一种是与硬件相关的基本输入输出系统;
另一种是与硬件无关的基本输入输出系统,即由操作系统提供的输入输出功能,常称DOS功能调用。
属于第一种的,如由ROM-BIOS(BASICI/OSYSTEM)的INT16H提供的三种键盘输入输出,由INT
10H提供的16种功能支持屏幕处理等等。
第二种是操作系统为用户提供的使用输入输出设备的系统资源,也是提倡采用的一种资源。
它不仅使用简单,而且可以确保所开发的软件在同一操作系统下的(不同计算机)兼容性。
在多用户和多任务的环境下,与硬件有关的ROMBIOS资源只允许操作系统这个特殊用户使用,即用户只可以使用INT
21H提供的功能调用。
这个系统功能调用就是DOS系统功能调用。
INT
21H功能调用包括字符输入、字符输出、磁盘控制、文件管理、记录操作、目录操作、动态存储分配、网络功能等。
DOS功能调用的步骤:
1)将功能号赋给AH;
2)置入口参数;
3)执行“INT21H”;
4)分析出口参数。
下面举例说明常用的系统功能调用(int21h)的方法。
1.常用的输入/输出系统功能调用
(1)键盘输入(1号调用)
格式:
MOVAH,1
INT21H
(2)显示输出(2号调用)
MOVAH,2
MOVDL,待显示的字符
INT21H
(3)打印输出(5号调用)
MOVDL,待打印的字符
MOVAH,5
(4)控制台输入(8号调用)
MOVAH,8
用于输入密码,输入的内容在显示器上不显示。
(5)显示字符串(9号调用)
MOVDX,字符串的偏移地址
MOVAH,9
功能:
将数据区中DS:
DX所指定的以‘$’结束字符的字符串从显示器上显示出来。
例8.3.3:
DATASEGMENT
BUFDB0AH,0DH,'
IWISHYOUSUCCESS!
$'
DATA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 输入输出及中断系统 输入输出 中断 系统