




已阅读5页,还剩105页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第7章 输入/输出与中断,7.1 I/O接口概述 7.2 CPU与外设之间数据传送的方式 7.3 中断技术 7.4 8086/8088 中断系统 7.5 可编程中断控制器Intel 8259A,7.1 I/O接口概述,7.1.1 I/O接口的作用,图7.1 主机与外设的连接,7.1.2 CPU与外设交换的信息 主机与I/O设备之间交换的信息可分为数据信息、状态信息和控制信息三类。 1数据信息 数据信息又分为数字量、模拟量和开关量三种形式。 1) 数字量 数字量是计算机可以直接发送、接收和处理的数据。例如,由键盘、显示器、打印机及磁盘等I/O外设与 CPU交换的信息,它们是以二进制形式表示的数或以ASCII码表示的数符。,2) 模拟量 当计算机应用于控制系统中时,输入的信息一般为来自现场的连续变化的物理量,如温度、压力、流量、位移、湿度等,这些物理量通过传感器并经放大处理得到模拟电压或电流,这些模拟量必须先经过模拟量向数字量的转换(A/D转换)后才能输入计算机。反过来,计算机输出的控制信号都是数字量,也必须先经过数字量向模拟量的转换(D/A转换),把数字量转换成模拟量才能去控制现场。,3) 开关量 开关量可表示两个状态,如开关的断开和闭合,机器的运转与停止,阀门的打开与关闭等。这些开关量通常要经过相应的电平转换才能与计算机连接。开关量只要用一位二进制数即可表示。,2. 状态信息 状态信息作为CPU与外设之间交换数据时的联络信息,反映了当前外设所处的工作状态,是外设通过接口送往CPU的。,3控制信息 控制信息是CPU通过接口传送给外设的,CPU通过发送控制信息设置外设(包括接口)的工作模式、控制外设的工作。,7.1.3 I/O接口的基本结构,输入/输出操作所用到的地址总是对端口而言,而不是对接口而言的。接口和端口是两个不同的概念,若干个端口加上相应的控制电路才构成接口。,7.1.4 I/O端口的编址 1I/O端口与内存单元统一编址,2I/O端口与内存单元独立编址,地址总线的低16位,20根地址线,3I/O端口的地址译码 微机系统常用的I/O接口电路一般都被设计成通用的I/O接口芯片,一个接口芯片内部可以有若干可寻址的端口。因此,所有接口芯片都有片选信号线和用于片内端口寻址的地址线。例如,某接口芯片内有四个端口地址,则该芯片外就会有两根地址线。,I/O端口地址译码的方法有多种,一般的原则是把CPU用于I/O端口寻址的地址线分为高位地址线和低位地址线两部分,将低位地址线直接连到I/O接口芯片的相应地址引脚,实现片内寻址,即选中片内的端口;将高位地址线与CPU的控制信号组合,经地址译码电路产生I/O接口芯片的片选信号。,7.2 CPU与外设之间数据传送的方式,7.2.1 程序传送方式 1无条件传送方式 微机系统中的一些简单的外设,如开关、继电器、数码管、发光二极管等,在它们工作时,可以认为输入设备已随时准备好向CPU提供数据,而输出设备也随时准备好接收CPU送来的数据,这样,在CPU需要同外设交换信息时,就能够用IN或OUT指令直接对这些外设进行输入/输出操作。由于在这种方式下CPU对外设进行输入/输出操作时无需考虑外设的状态,故称之为无条件传送方式。,图7.5 无条件传送方式 (a) 无条件传送数据输入;(b) 无条件传送数据输出,(读取速度慢),数据保留时间长,无条件传送方式特点: 无条件传送方式下,程序设计和接口电路都很简单,但是为了保证每一次数据传送时外设都能处于就绪状态,传送不能太频繁。对少量的数据传送来说,无条件传送方式是最经济实用的一种传送方法。,2查询传送方式 查询传送也称为条件传送,是指在执行输入指令(IN)或输出指令(OUT)前,要先查询相应设备的状态,当输入设备处于准备好状态,输出设备处于空闲状态时,CPU才执行输入/输出指令与外设交换信息。为此,接口电路中既要有数据端口,还要有状态端口。 查询传送方式的流程图见图7.6。从图中可以看出,采用查询方式完成一次数据传送要经历如下过程: (1) CPU从接口中读取状态字。 (2) CPU检测相应的状态位是否满足“就绪”条件。 (3) 如果不满足,则重复(1)、(2)步;若外设已处于“就绪”状态,则传送数据。,图7.6 查询传送方式的流程图,图7.7 查询式输入的接口电路,图7.8 查询式输出的接口电路,查询传送方式的主要优点是能保证主机与外设之间协调同步地工作,且硬件线路比较简单,程序也容易实现。查询传送方式有两个突出的缺点:浪费CPU时间,实时性差。所以,查询传送方式适用于数据输入/输出不太频繁且外设较少、对实时性要求不高的情况。 不论是无条件传送方式还是查询传送方式,都不能发现和处理预先无法估计的错误和异常情况。为了提高CPU的效率、增强系统的实时性,并且能对随机出现的各种异常情况做出及时反应,通常采用中断传送方式。,7.2.2 中断传送方式 中断传送方式是指当外设需要与CPU进行信息交换时,由外设向CPU发出请求信号,使CPU暂停正在执行的程序,转去执行数据的输入/输出操作,数据传送结束后,CPU再继续执行被暂停的程序。 查询传送方式是由CPU来查询外设的状态,CPU处于主动地位,而外设处于被动地位。中断传送方式则是由外设主动向CPU发出请求,等候CPU处理,在没有发出请求时,CPU和外设都可以独立进行各自的工作。目前的微处理器都具有中断功能,而且已经不仅仅局限于数据的输入/输出,而是在更多的方面有重要的应用。例如实时控制、故障处理以及BIOS和DOS功能调用等。,中断传送方式的优点是:CPU不必查询等待,工作效率高,CPU与外设可以并行工作;由于外设具有申请中断的主动权,故系统实时性比查询方式要好得多。但采用中断传送方式的接口电路相对复杂,而且每进行一次数据传送就要中断一次CPU,CPU每次响应中断后,都要转去执行中断处理程序,且都要进行断点和现场的保护和恢复,浪费了很多CPU的时间。故这种传送方式一般适合于少量的数据传送。对于大批量数据的输入/输出,可采用高速的直接存储器存取方式,即DMA方式。,7.2.3 直接存储器存取(DMA)传送方式 1DMA传送方式简介 DMA传送方式是在存储器和外设之间、存储器和存储器之间直接进行数据传送(如磁盘与内存间交换数据、高速数据采集、内存和内存间的高速数据块传送等),传送过程无需CPU介入,这样,在传送时就不必进行保护现场等一系列额外操作,传输速度基本取决于存储器和外设的速度。DMA传送方式需要一个专用接口芯片DMA控制器(DMAC)对传送过程加以控制和管理。在进行DMA传送期间,CPU放弃总线控制权,将系统总线交由DMAC控制,由DMAC发出地址及读/写信号来实现高速数据传输。传送结束后DMAC再将总线控制权交还给CPU。一般微处理器都设有用于DMA传送的联络线。,图7.9 DMA系统结构框图,7.3 中断技术 7.4 8086/8088中断系统 7.5 可编程中断控制器8259A,中断与中断源,1.中断 在CPU正常运行程序时,由于内部事件、外部事件或由程序预先安排的事件所引起的CPU暂时停止正在运行的程序,而转去执行请求CPU服务的内部/外部事件或预先安排事件的服务程序,待服务程序处理完毕后又返回去继续执行被暂停的程序 2.中断源 发出中断请求的外部设备或引起中断的内部原因称为中断源 常见的中断源有 (1)故障中断,如电源掉电、内存奇偶错等; (2)软件中断,如CPU执行某些指令或操作引起的中断等; (3)输入输出设备中断,如打印机、CRT、磁盘等; (4)实时时钟,如定时器提供的实时信号等。 3. 中断识别 即找出是哪一个中断源发出的中断请求 中断识别的目的是要形成该中断源的中断服务程序的入口地址,以便CPU将此地址置入 CS:IP寄存器 ,从而实现程序的转移,返 回,中断系统的功能,中断系统是指实现中断功能的软硬件的统称 功能 1正确识别中断请求,实现中断响应、中断处理及中断返回 2实现中断优先级排队 3实现中断嵌套,返 回,中断处理过程,中断请求.软件中断源,硬件中断源。 中断响应.条件:1.开中断,2.CPU在执行完现行指令之后. 保护断点 中断处理:1.保护现场,2.执行中断服务程序,3. 恢复现场. 中断返回(IRET指令),返 回,中断优先级,软件查询法 硬件排队电路 专用中断控制芯片,1软件查询法,IN AL,n TEST AL,80H ;1号外设有请求? JNZ II1 ;有,转1号中断服务程序 TEST AL,40H ;2号外设有请求? JNZ II2 ;有,转2号中断服务程序,2硬件排队电路,3专用中断控制芯片,在微型机中普遍使用一种可编程的中断控制器(如Intel 8259A)实现中断优先级的管理。,中断的多级嵌套,一个中断请求尚未处理完,又转而处理新的中断请求,称为中断的多级嵌套或称为多级中断,例题,如图,设8255的端口地址为60H63H,8253的端口地址为40H43H,现要求用中断的方法,使每隔55ms,8255的PC7所接的LED的亮暗发生一次变化。写出对应的控制程序。,;主程序1/2:,Code segment assume cs:code Start:mov dx,offset led ;将中断服务程序入口 ;地址置入中断向量为 ;02H的中断向量表中 mov ax,seg led mov ds,ax mov ah,25h mov al,02h int 21h,;主程序2/2:,MOV AL,00110110B ;8253计数器0初始化,二进制计数 OUT 43H,AL MOV AL,0AAH ;计数初值是65450D=FFAAH OUT 40H,AL MOV AL,0AAH OUT 40H,0FFH MOV AL,10000000B ;8255初始化 OUT 63H,AL MOV AL,00001110B ;用位置位的方法,使8255的PC7 ;开始时为低,不影响其它位 MOV BL,AL ;BL寄存器用作参数传递 OUT 63H,AL (Looper:jmp looper),;中断服务程序:,LED: PUSH AX ;保护AX现场 XOR BL,00000001B ;对BL的最低位取反,其它位不 ;改变,即只对位置位字的最低位取反 MOV AL,BL OUT 63H,AL ;8255的PC7取反 POP AX ;恢复AX现场 IRET ;中断返回 Code ends end start,7.4 8086的中断结构,7.2.1 8086的中断类型 外部中断 内部中断 7.2.2 中断向量和中断向量表 7.2.3 中断向量的装入 7.2.4 8086的中断响应过程 外部中断响应过程 内部中断响应过程,7.4.1 8086的中断类型,外部中断是由外部硬件请求产生的中断,所以又称为硬件中断。 内部中断是由指令的执行或者软件对标志寄存器中某个标志的设置产生的中断,所以又称为软件中断。 每一个中断都有一个8位的中断类型号,共256个(00HFFH),CPU依赖中断类型号来区分各个中断源.,(32255),(32255),1软件中断(内部中断),(1)专用中断。 在中断向量表中,类型号04中除了类型号2的NMI非屏蔽中断外,其余均为专用的软件中断,它们通常是由某个标志位引起的中断。 0型中断除法出错中断。 1型中断单步中断。(TF=1) 3型中断断点中断(INT 3 )。 4型中断溢出中断(INTO指令) (2)指令中断 INT n指令,其类型号就是给定的n。,2硬件中断(外部中断),(1)非屏蔽中断NMI。用户不能用软件屏蔽的中断。上上升沿触发。 (2)可屏蔽中断INTR。8086的INTR中断请求信号来自中断控制器8259A,是电平触发方式,高电平有效。中断类型号由外设向数据总线输出。,注:对于非屏蔽中断和软件中断,其中断类型号由CPU内部自动提供,不需去执行中断响应周期读取中断类型号。,3.8086/8088中断源的优先级,8086/8088中断源的优先级顺序由高到低依次为:软件中断(除单步中断外)、非屏蔽中断、可屏蔽中断、单步中断。 在PC机系统中,外设的中断请求通过中断控制器8259A连接到CPU的INTR引脚,外设中断源的优先级别由8259A进行管理。,中断指令,INT n ;n为中断类型号0255 一些固定用法: (1). INTO ;同INT 4 (2). 在程序中设置断点 ;同INT 3 (3).除法错中断 (4).非屏蔽中断(NMI) IRET ;中断返回指令 注:对外部的中断,在程序中一般不要写出其对应的指令.如非屏蔽中断NMI,只要输入到NMI的信号符合要求时,CPU自动进入中断类型号为02H的中断服务程序,INTR同此,即什么时候中断是由外设决定的,而不是由编程来决定的.,7.4.2 中断向量和中断向量表,中断向量是中断服务程序的入口地址。 把系统中所有的中断向量集中起来放到存储器的某一区域内,这个存放中断向量的存储区就叫中断向量表或中断服务程序入口地址表。 中断向量表的每一个向量的序号就是中断类型号,共256个中断类型。 中断向量在表中的位置称为中断向量地址 中断向量地址中断类型号4,(5个),(27个),(224个),例题,若8086从8259A中断控制器中读取的中断类型号为76H,其中断向量在中断向量表中的地址指针(开始地址)是多少? 设从0000:005AH开如的6个存贮单元中的内容分别为00H,01H,02H,03H,04H,05H,则执行指令INT 17H后,CS中的内容为多少?IP中的内容为多少?,7.4.3 8086的中断响应过程,1内部中断响应过程 2外部中断响应过程,1内部中断响应过程,过程: (1)将类型号乘4,计算出中断向量的地址; (2)CPU的标志寄存器入栈,以保护各个标志位,此操作类似于PUSHF指令。 (3)清除IF和TF标志,屏蔽新的INTR中断和单步中断。 (4)保存断点,即把断点处的IP和CS值压入堆栈,先压入CS值,再压入IP值。 (5)根据第一步计算出来的地址从中断向量表中取出中断服务程序的入口地址(段和偏移),分别送至CS和IP中。 (6)转入中断服务程序执行。 特点: 中断由CPU内部引起,中断类型号的获得与外部无关,CPU不需要执行中断响应周期去获得中断类型号。 除单步中断外,内部中断无法用软件禁止,不受中断允许标志IF的影响。 内部中断何时发生是可以预测的,这有点类似于子程序调用。,2.外部中断响应过程,(1)非屏蔽中断响应。 NMI中断不受IF标志的影响,也不用外部接口给出中断类型号,CPU响应NMI中断时也没有中断响应周期。 (2)可屏蔽中断响应。 当INTR信号有效时,如果中断允许标志IF1,则CPU就在当前指令执行完毕后,产生两个连续的中断响应总线周期。,8086中断处理的基本过程,例题,设一8086的中断向量表如左图所示,试分析下面程序的运行情况.,MOV AX,0F05H MOV BL,0H DIV BL ADD AX,BX INTO MOV CX,0030H INT 17H 此时NMI引脚有中断请求,(0302:0100)INT1:MOV AX,7865H IRET (0706:0504)INT2:MOV AX,3333H IRET (0B0A:0908)INT3:MOV BL,98H IRET (0307:0605)INT4:MOV CL,90H,0000:0008H 05H 0000:0009H 06H 0000:000AH 07H 0000:000BH 03H,中断向量的装入,中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量表中。系统配置和使用的中断所对应的中断向量由系统软件负责装入。若系统中(如单板机)未配置系统软件,就要由用户自行装入中断向量。,中断向量的装入(一般置于主程序开头),1DOS系统功能调用法 功能号:(AH)=25H。 入口参数:(AL)=中断类型号 (DS)=中断服务程序入口地址的段地址 (DX)=中断服务程序入口地址的偏移地址,下面程序段完成中断类型号为60H的入口地址置入。 PUSH DS ;保护DS MOV DX,OFFSET INT60 ;取服务程序偏移地址 MOV AX,SEG INT60 ;取服务程序段地址 MOV DS,AX MOV AH,25H ;送功能号 MOV AL,60H ;送中断类型号 INT 21H ;DOS功能调用 POP DS ;恢复DS,2直接装入法 用传送指令直接将中断服务程序首地址置入矢量表中。设中断类型号为60H(此类型号对应的矢量表地址为从00180H开始的四个连续存储单元)。程序段如下: XOR AX,AX MOV DS,AX MOV AX,OFFSET INT60 MOV DS:0180H,AX ;置服务程序偏移地址 MOV AX,SEG INT60 MOV DS:0180H+2,AX ;置服务程序所在代码段的段地址,中断向量的装入,编程举例,用中断的方法实现在屏幕上显示字符串”This is a ”,设中断类型号为60H.,Data segment Mesg db ”This is a $” Data ends Code segment assume cs:code,ds:data Start:mov ax,data mov ds,ax push ds mov dx,offset disp60 mov ax,seg disp60 mov ds,ax mov ah,25h mov al,60h int 21h,POP DS INT 60H MOV AH,4CH INT 21H DISP60 PROC FAR MOV DX,OFFSET MESG MOV AH,09H INT 21H IRET DISP60 ENDP CODE ENDS END START,7.5 可编程中断控制器8259A,7.5.1 8259A的内部结构和引脚特性 7.5.2 8259A的工作过程 7.5.3 8259A的工作方式 7.5.4 8259A的级联电路 7.5.5 8259A的编程命令 7.5.6 8259A编程举例,7.3.1 8259A的内部结构和引脚特性,8259A的内部结构 8259A的引脚特性,18259A的内部结构,28259A的引脚特性,返 回,图7.22 8259A引脚,7.3.2 8259A的工作过程,1中断源通过IR0IR7向8259A发中断请求,使得8259A的中断请求寄存器IRR的相应位置1。 2IRR中经中断屏蔽寄存器IMR允许后的置位位进入优先权判别器PR,PR将其中最高优先权的中断请求从INT输出,送至CPU的INTR端。 3若CPU处于开中断状态,则在当前指令执行结束后,启动中断响应总线操作,发出两个负脉冲作为响应信号。 48259A接收到第一个负脉冲,完成如下工作: (1)使ISR相应位置1,表示CPU已为该中断请求服务。 (2)使IRR的相应位清0。 58259A接收到第二个负脉冲,将中断类型号送上数据总线。中断类型号由用户编程和中断请求引脚IRi的序号i共同决定(CPU读取中断类型号,经响应过程后,进入中断服务程序,直到服务结束返回)。 6若8259A工作在自动结束中断方式AEOI,则8259A清除ISR的相应位,否则直至中断服务结束,发出EOI命令,才能使ISR中的相应位清0。,7.3.3 8259A的工作方式,1中断屏蔽方式 2中断嵌套方式 3优先级控制方式 4中断结束方式,1中断屏蔽方式,(1)普通屏蔽方式。利用操作命令字OCW1,使屏蔽寄存器IMR中的一位或数位置1来屏蔽一个或数个中断源的中断请求。 (2)特殊屏蔽方式。在某些场合,执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应,此时可采用特殊屏蔽方式。,2中断嵌套方式,(1)全嵌套方式。 中断优先级按IR0IR7顺序进行排队,并且只允许中断级别高的中断源去中断级别低的中断服务程序,但不能相反。 在对8259A进行初始化以后,没有设置其他优先级方式,则自动按此方式工作。 (2)特殊全嵌套方式。 当执行某一级中断服务程序时,可响应同级的中断请求,从而实现对同级中断请求的特殊嵌套。 特殊全嵌套方式用于多片级联。,3优先级控制方式,(1)优先级自动循环方式。 优先级顺序不是固定不变的,一个设备得到中断服务后,其优先级自动降为最低。其初始的优先级顺序规定为IR0,IR1,IR2,IR7 用于系统中多个中断源优先级相等的场合 (2)优先级特殊循环方式。 其初始的优先级不是固定IR0为最高,然后开始循环,而是由程序指定IR0IR7中任意一个为最高优先级,然后再按顺序自动循环,决定优先级。,4中断结束方式,(1)自动中断结束方式。 在中断服务程序中,中断返回之前,不需要发出中断结束命令就会自动清除该中断源所对应的ISR位(实际上在CPU发出第二个INTA信号时,8259即自动清除ISR中的对应位)。 用在多个中断不会嵌套的系统中。 (2)非自动中断结束方式。 在中断服务程序返回之前,必须发中断结束命令才能使ISR中的当前服务位清除。,返 回,7.3.4 8259A的级联电路,返 回,7.3.5 8259A的编程命令,初始化命令字ICW 操作命令字OCW,1初始化命令字 1) ICW1 ICW1主要用于设置工作方式,其格式及各位的定义如图7.24所示。,图7.24 ICW1的作用,D0(IC4)-用于设置用不用ICw4 DI(SNGL)-用于设置用不有ICw3,2) ICW2 ICW2用于设置中断类型号,写入A0=1的端口,其格式如图7.25所示。,图7.25 ICW2的作用,3) ICW3 ICW3用于设置级联,写入A0=1的端口,格式如图7.26所示。,图7.26 ICW3的作用,4) ICW4 ICW4用于设置8259A的工作方式,写入A0=1的端口,格式如图7.27所示。ICW1的IC4位为1时,才写入ICW4。,图7.27 ICW4的作用,2初始化编程 8259A初始化流程图如图7.28所示。任何一种8259A的初始化都必须发送ICWl和ICW2,只有在ICWl中指明需要ICW3和ICW4以后,才发送ICW3和ICW4。一旦初始化以后,若要改变某一个ICW,则必须重新再进行初始化编程,不能只是写入单独的一个ICW。,例如,PC/AT机中8259A的主片定义为:上升沿触发、在IR2级联从片、有ICW4、非AEOI方式、中断类型号08H0FH、一般的中断嵌套方式、端口地址是20H、21H;从片定义为:上升沿触发、级联到主片的IR2、有ICW4、非AEOI方式、中断类型号为70H77H、一般的中断嵌套方式、端口地址是A0H、A1H。初始化过程如下:,初始化主片 初始化从片 MOV AL,11H MOV AL,11H OUT 20H,AL OUT 0A0H,AL MOV AL,08H MOV AL,70H OUT 21H,AL OUT 0A1H,AL MOV AL,04H MOV AL,02H OUT 21H,AL OUT 0A1H,AL MOV AL,01H MOV AL,01H OUT 21H,AL OUT 0A1H,AL,1初始化命令字ICW,初始化命令字ICW1(置工作方式) 初始化命令字ICW2(置中断类型号) 初始化命令字ICW3(设置级联) 初始化命令字ICW4(置工作方式),图7.29 OCW1的作用,MX=1表示屏蔽中断源IRX;MX=0表示来自IRX的中断请求得到允许。例如,若OCW1=03H,说明IR0和IR1上的中断请求被屏蔽。,1) OCW1 OCW1的功能是设置和清除中断屏蔽寄存器的相应位,写入A0=1的端口,格式如图7.29所示。,3操作命令字,图7.30 OCW2的作用,2) OCW2用于设置优先级循环方式和中断结束方式,写入A0=0的端口,格式如图7.30所示。,3) OCW3 OCW3的功能有三个方面:设置和撤消特殊屏蔽方式、设置中断查询方式以及设置对8259A内部寄存器的读出。OCW3写入A0=0的端口,格式如图7.31所示。,4259A的读操作 在PC机中8259A的端口地址为20H和21H。常用的读操作有如下几种。 (1) 读出IRR的值:先向20H端口写0AH(OCW3 RR=1、RIS=0),再读20H端口。 例如: MOV AL,0AH ;OCW3=0AH OUT 20H,AL ;OCW3写入8259A IN AL,20H ;读出IRR 内容,(2) 读出ISR的值:先向20H端口写0BH(OCW3 RR=1、RIS=1),再读20H端口。 例如: MOV AL,0BH ;OCW3=0BH OUT 20H,AL ;OCW3写入8259A IN AL,20H ;读出ISR 内容,(3) 读查询字(读出最高级别的中断请求IR):先向20H端口写0CH(OCW3 P=1),再读20H端口。例如: MOV AL,0CH ;OCW3=0CH OUT 20H,AL ;OCW3写入8259A IN AL,20H ;读出查询字内容,(4) 读IMR的值。随时可用奇地址读IMR的值,并对其作修改。 例1: IN AL,21H ;读IMR AND AL,7FH ;开放IR7中断 OUT 21H,AL ;修改IMR 例2: IN AL,21H ;读IMR OR AL,80H ;关闭IR7中断 OUT 21H,AL ;修改IMR,58259A应用举例,图7.32 8259A 在PC/XT机中的连接,从图中可以看出8259A的IR2端是保留端,其余都已被占用。现假设某外设的中断请求信号由IR2端引入,要求编程实现CPU每次响应该中断时屏幕显示字符串“WELCOME!”。 已知主机启动时8259A中断类型号的高5位已初始化为00001,故IR2的类型号为0AH(00001010B);8259A的中断结束方式初始化为非自动结束,即要在服务程序中发EOI命令;8259A的端口地址为20H和21H。程序如下:,DATA SEGMENT MESS DB WELCOME!,0AH,0DH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,SEG INT2 MOV DS,AX MOV DX,OFFSET INT2 MOV AX,250AH,INT 21H ;置中断矢量表 IN AL,21H ;读中断屏蔽寄存器 AND AL,0FBH ;开放IR2中断 OUT 21H,AL STI LL: JMP LL ;等待中断 INT2: MOV AX,DATA ;中断服务程序 MOV DS,AX MOV DX,OFFSET MESS MOV AH,09 INT 21H ;显示每次中断的提示信息 MOV AL,20H OUT 20H,AL ;发出EOI结束中断 IN AL,21H OR AL,04H ;屏蔽IR2中断,OUT 21H,AL STI MOV AH,4CH INT 21H IRET CODE ENDS END START,7.3.6 8259A编程举例,例7-3 以IBM PC/AT(80286)微机中的8259A为例说明其初始化编程方法。 (1)分析 (2)设计,(1)分析,在286以上的PC机中,共使用了两片8259A(新型的PC中已将中断控制器集成到了芯片组中,但功能上与8259A完全兼容),两片级联使用,共可管理15级中断。主片8259A的IRQ2(即IR2)中断请求端用于级联从片8259A,所以相当于主片的IRQ2又扩展了8个中断请求端IRQ8IRQ15。中断向量地址指针 主片8259A的端口地址为20H、21H,中断类型号为08H0FH,从片8259A的端口地址为A0H、A1H,中断类型号为70H77H。 主片的8级中断已全被系统使用(其中IRQ2被从片占用),从片尚保留4级未用。其中IRQ0用于日历时钟中断(08H),IRQ1用于键盘中断(09H)。 扩展的IRQ8用于实时时钟中断,IRQ13来自协处理器80287。除上述中断请求信号外,所有其它的中断请求信号都来自I/O通道的扩展板,(2)设计, 8259A初始化编程 ;主片8259A的初始化 MOV AL,11H ;写入ICW1,设定边沿触发,级联方式 OUT 20H,AL JMP INTR1 ;延时,等待8259A操作结束,下同 INTR1:MOV AL,08H ;写入ICW2,设定IRQ0的中断类型号为08H OUT 21H,AL JMP INTR2 INTR2:MOV AL,04H ;写入ICW3,设定主片IRQ2级联方式 OUT 21H,AL JMP INTR3 INTR3:MOV AL,11H ;写入ICW4,设定特殊全嵌套方式,一般EOI方式 OUT 21H,AL ;从片8259A的初始化 MOV AL,11H ;写入ICW1,设定边沿触发,级联方式 OUT 0A0H,AL JMP INTR5 INTR5:MOV AL,70H ;写入ICW2,设定从片IR0,即IRQ8的中断类型号为70H OUT 0A1H,AL JMP INTR6 INTR6:MOV AL,02H ;写入ICW3,设定从片级联到主片的IRQ2 OUT 0A1H,AL JMP INTR7 INTR7:MOV AL,01H ;写入ICW4,设定普通全嵌套方式,一般EOI方式 OUT 0A1H,AL , 级联工作编程,;读ISR的内容 MOV AL,0BH ;写入OCW3,读ISR命令 OUT 0A0H,AL NOP ;延时,等待8259A操作结束 IN AL,0A0H ;读出ISR ;向从片发EOI命令 MOV AL,20H OUT 0A0H,AL ;写从片EOI命令 ;向主片发EOI命令 MOV AL,20H OUT 20H,AL ;写主片EOI命令 ,返 回,7.4 中断调用,7.4.1 DOS和BIOS中断的调用方法 7.4.2 DOS系统功能调用 字符设备I/O控制 文件管理 定时系统 中断向量的修改 7.4.3 BIOS功能调用 显示器的BIOS调用 磁盘的BIOS调用 键盘的BIOS调用 打印机的BIOS调用,返 回,7.4.1 DOS 和BIOS 中断的调用方法,1. 将入口参数送入指定的调用寄存器,如果没有入口参数,就不需要这一步。 2将功能号送入AH寄存器,将子功能号送入AL寄存器,如果没有子功能号,不需要送AL。 3产生一个软中断INT n ,转入子程序入口。 4通过CPU的返回寄存器返回中断处理结果出口参数。如果没有返回值,也就不需要返回寄存器。,例7-4,使用INT 21H 的2BH系统功能设置日期为2004年5月1日。 MOV DL,1 ;入口参数送入指定寄存器:把日子放入DL中 MOV DH,5 ;把月份放入DH中 MOV CX,2004 ;把年份放入CX中,CX中的年份值是以1980为基准的偏移值 SUB CX,1980 ;减去1980才为年份设定值 MOV AH,2BH ;设置日期功能号送入AH寄存器 INT 21H ;执行DOS调用 CMP AL,0FFH ;根据出口参数AL=00H,设置成功;AL=FFH,判断失败 JE ERROR ;不成功,转错误处理 ;成功,往下执行 ERROR:(略),返 回,7.4.2 DOS系统功能调用,字符设备I/O控制 文件管理 定时系统 中断向量的修改,1字符设备I/O控制,表7-2 字符设备的系统功能,例7-5,从键盘输入一个字符,并同时在显示屏上输出,当键入字符$时,则停止操作。 DON1: MOV AH,O1H ;置单字符输入 INT 21H CMP AL,$ ;是结束字符吗 JZ DON2 ;是,转向DON2 MOV DL,AL MOV AH,02H ;显示输出字符 INT 21H JMP DON1 DON2: INT 0 ;程序结束,例7-6,从键盘输入一串字符,并在显示屏上显示出来。注意09H功能显示字符串时是以$符号结束的,因此,要显示的字符串一律以$结尾 DATA SEGMENT BUFSIZE DB 50 ;最多可键入50个字符 ACTLEN DB ? ;实际键入的字符数 CHRAS DB 50 DUP(20H) ;实际键入的字符从此开始存放 DB $ ;为显示而加的字符串结束符 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MOV DX,OFFSET BUFSIZE;键入缓冲区起始偏移地址送DX MOV AH,0AH ;字符串输入功能 INT 21H ;输入字符串并放入缓冲区 MOV DX,OFFSET CHARS ;输入的字符串起始地址送DX MOV AH,09H ;字符串显示功能 INT 21H ;显示键入的字符串 ,2. 文件管理,表7-3 文件管理的DOS系统功能,例7-7,在磁盘中建立一个文件,并显示完成的结果。假设BUF1中存放正常信息,BUF2中存放错误信息 LEA DX,FILEBUF MOV CX,0 MOV AH,3CH ;建立文件 INT 21H JC ERROR LEA DX,BUF1 ;无错,提示正常信息 MOV AH,09H INT 21H JMP DON ERROR:LEA DX,BUF2 ;有错,提示错误信息 MOV AH,09H INT 21H DON: INT 0 ;程序结束,例7-8,打开某文件,并向其中写入内容。 LEA DX,FILENAME MOV AL,1 ;置写方式 MOV AH,3DH ;打开文件 INT 21H DON1:LEA DX,FILEBUF ;字符串输入 MOV AH,0AH INT 21H MOV C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论