7864629.docxx - 19 - 作者:喻其山
第 7 章 中断控制器、DMA
7.1
控制器和计数器/定时器
8259A的初始化命令字和操作命令字有什么差别?它们分别对应于编程结构中哪些内部寄存器? 答:1.8259A的初始化命令字是计算机系统启动时,由初始化程序设置的。初始化命令字一旦设定,
一般在系统工作过程中就不再改变。操作命令字则是由应用程序设定的,它们用来对中断处理过程作动态控制,在一个系统运行过程中,操作命令字可以多次设置。
2.初始化命令字对应于编程结构的ICW1、ICW2、ICW3、ICW4共4个寄存器。操作命令字对应于编程结构的OCW1、OCW2、OCW3共3个寄存器。 8259A的中断屏蔽寄存器IMR和8086/8088CPU的中断允许标志IF有什么差别?在中断响应过程中,它们怎样配合起来工作?
答:1.若IMR的某位为0则该位对应的引腿上的中断请求未加屏蔽,让它通过而进入中断优先级裁
决器作裁决。若IMR的某位为1则屏蔽该位对应的引腿上的中断请求,不让它进入中断优先级裁决器。而8086/8088CPU的中断允许标志IF为1则允许INTR引腿进入的中断,IF为0则屏蔽INTR引腿进入的中断。与8259A的IMR位为0为1正好相反。
2.在中断响应过程中,IMR用于对外设向8259A发中断申请的允许/屏蔽,而CPU的IF用于对8259A由INT向CPU的INTR引腿发中断申请的允许/屏蔽。 8259A的全嵌套方式和特殊全嵌套方式有什么差别?各自用在什么场合?
答:1.全嵌套工作方式,只有更高级的中断请求来到时,才会进行嵌套。而特殊全嵌套方式则能被
同级和高级的中断请求所嵌套。
2.全嵌套方式用于单片8259A的场合。特殊全嵌套方式用于多片8259A系统。 8259A的优先级循环方式和优先级特殊循环方式有什么差别? 答:在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也由此而定。
而优先级自动循环方式初始优先级队列为IR0~IR7。 8259A的特殊屏蔽方式和普通屏蔽方式相比,有什么不同之处?特殊屏蔽方式一般用在什么场合? 答:1.在特殊屏蔽方式中用OCW1对屏蔽寄存器中某一位进行置位时,就会同时使ISR中的对应位
自动清0。而普通屏蔽方式对OCW1的操作不影响ISR中各位的状态。
2.特殊屏蔽方式用于中断处理程序中,以开放比本身的优先级较低的中断请求。 8259A有几种结束中断处理的方式?各自应用在什么场合?除了中断自动结束方式以外,其他情况下如果没有在中断处理程序中发中断结束命令,会出现什么问题? 答:1.8259A有三种结束中断处理的方式。
2.中断自动结束方式用于只有一片8259A,并且多个中断不会嵌套的情况。一般的中断结束方式用在全嵌套情况下及多片8259A的级联系统中。特殊中断结束方式用于循环优先级的8259A中。
3.不发中断结束命令会使8259A认为该中断未结束,从而挡住了低优先级的中断被响应,即中断控制功能不正常。 8259A引入中断请求的方式有哪几种?如果对8259A用查询方式引入中断请求,那会有什么特点?中断查询方式用在什么场合?
答:1.引入中断请求的方式有:边沿触发方式、电平触发方式、中断查询方式三种。
2.中断查询方式的特点:
① 设备仍然通过往8259A发中断请求信号要求CPU服务,但8259A不使用INT信号向CPU
发中断请求信号。
② CPU内部的中断允许触发器复位,所以禁止了外部对CPU的中断请求。 ③ CPU要使用软件查询来确认中断源,从而实现对设备的中断服务。 3.中断查询方式一般用在多于64个中断的场合,也可以用在一个中断服务程序中的几个模块分别为几个中断设备服务的情况。 8259A的初始化命令字有哪些?它们各自有什么含义?哪几个应写入奇地址?哪几个应写入偶地址?
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7864629.docxx - 20 - 作者:喻其山
答:1.8259A的初始化命令字有ICW1、ICW2、ICW3、ICW4共四个。
2.ICW1——芯片控制初始化命令字。ICW2——设置中断类型码的初始化命令字。ICW3——标志主片/从片的初始化命令字。ICW4——方式控制初始化命令字。 3.ICW2、ICW3、ICW4必须写入奇地址端口中。 4.ICW1必须写入偶地址端口中。 7.9
8259A的ICW2设置了中断类型码的哪几位?说明对8259A分别设置ICW2为30H、38H、36H有什么差别?
答:1.8259A的ICW2设置了中断类型码的高5位。低3位中断类型码对应引入中断的引腿号。
2.当设置ICW2为30H和36H时,完全相同。对应的8个中断类型码为30H~37H。而设置ICW2为38H时,对应的8个中断类型码为38H~3FH。
7.10 8259A通过ICW4可以给出哪些重要信息?什么情况下不需要ICW4?什么情况下要设置ICW3?
答:1.当SFNM=1则为特殊的全嵌套方式;BUF=1则为缓冲方式;若为缓冲方式(BUF=1)则M/S=1
表示本片为主片,M/S=0为从片;AEOI=1则设置为中断自动结束方式。当μPM=1表示8259A当前所在系统为8086/8088系统,反之μPM=0则为8080/8085系统。 2.当ICW1的D0为IC4=0时,不需要用ICW4。 3.当ICW1的D1为SNGL=0时,需要设置ICW3。
7.11 试按照如下要求对8259A设置初始化命令字:系统中有1片8259A,中断请求信号用电平触发方式,
下面要用ICW4,中断类型码为60H、61H??67H,用特殊全嵌套方式,不用缓冲方式,采用中断自动结束方式。8259A的端口地址为90H、92H。 答: MOV AL,1BH ;ICW1的命令字为00011011B=1BH
OUT 90H,AL ;ICW1送偶地址端口 MOV AL,60H ;ICW2的命令字为60H OUT 92H,AL ;ICW2送奇地址端口 MOV AL,13H ;ICW4的命令字为00010011B=13H OUT 92H,AL ;ICW4送奇地址端口 7.12 怎样用8259A的屏蔽命令字来禁止IR3
的端口地址为90H、92H。 答:1. CLI
IN AL,92H OR AL,28H OUT 92H,AL STI
2. CLI
IN AL,92H AND AL,0D7H OUT 92H,AL STI
和IR5引腿上的请求?又怎样撤销这一禁止命令?设8259A
;(AL)←(IMR)
;禁止IR3和IR5引腿上的中断请求 ;OCW1送奇地址端口
;(AL)←(IMR)
;允许IR3和IR5引腿上的中断请求 ;OCW1送奇地址端口
7.13 试用OCW2对8259A设置中断结束命令,并使8259A按优先级自动循环方式工作。
答: MOV AL,0A0H ;OCW2的命令字为10100000B=A0H,满足上述要求
OUT PORT0,AL ;OCW2送偶地址端口 7.14 用流程图来表示特殊全嵌套方式的工作过程。设主程序运行时先在IR2端有请求,接着IR2端又有
请求,而此时前一个IR2还未结束,后来IR3端有请求,再后来IR1端有请求。 答:流程图如下页所示: 7.15 说明特殊屏蔽方式的使用方法。为什么要用“或”的方法来设置屏蔽字?
答:1.某一中断服务程序先用OCW3命令字(ESMM=1,SMM=1)使8259A工作在特殊屏蔽方式,再
用OCW1对IMR中本中断的对应位进行置位,就可以使系统除了对本级中断外,响应其他任何未被屏蔽的中断请求。中断处理结束时,用OCW1撤销前面设置的屏蔽位,并用OCW3撤销了特殊屏蔽方式。8259A又按照原优先级方式工作。
7864629.docxx - 21 - 作者:喻其山
2.用“或”的方法来设置屏蔽字可以不影响其他位的屏蔽状态。 主程序 IR2中断处理程序 初始化 IR2请求中断 开中断 IR2又有中断 IR2'中断处理程序 开中断 IR1中断处理程序 开中断 IR3中断处理程序 关中断 IR3中断请求 IR1中断请求 开中断 关中断 中断结束命令 开中断 中断返回 关中断 中断结束命令 开中断 中断返回 中断结束命令 开中断 中断返回 关中断 中断结束命令 开中断 中断返回 ┆ ┆ 7.16 80386系统中,8259A采用了级连方式,试说明在主从式中断系统中8259A的主片和从片的连接关系。
答:从片的INT输出接主片的IR0~IR7的某一输入端;主片的CAS2~CAS0接从片的CAS2~CAS0;
主片的INTA和从片的INTA连在一起接CPU的INTA输出端;主片和从片的WR、RD、D7~D0也都连在一起和CPU的WR、RD、DB7~DB0连接;主片和从片的A0连在一起接系统总线的AB1上;主片的SP/EN接数据驱动器的OE端,从片的SP/EN接地;主片和从片的CS各自接在地址译码器的一个输出端上。 7.17 试说明在DMA方式时内存往外设传输数据的过程。
答:当一个接口要由内存往其输出数据时,就往DMA控制器发一个DMA请求;DMA控制器接到
请求以后,便往控制总线上发一个总线请求;若CPU允许让出总线便发出一个总线允许信号;DMA控制器接到此信号后,就将地址寄存器的内容送到地址总线上,同时往接口发一个DMA回答信号并发一个I/O写信号和一个内存读信号;内存接到读信号后将数据送到数据总线,I/O写信号将数据送到接口,并撤除DMA请求信号,于是DMA控制器的地址寄存器的内容加1或减1,计数器的值减1,而且撤除总线请求信号,就完成了对一个数据的DMA输出传输。 7.18 对一个DMA控制器的初始化工作包括哪些内容?
答:① 将数据传输缓冲区的起始地址或者结束地址送到地址寄存器中;
② 将传输的字节数或字数送到计数器中。 ③ 通过模式寄存器设置工作方式等。
7.19 DMA控制器8237A什么时候作为主模块工作?什么时候作为从模块工作?在这两种情况下,各控
制信号处于什么状态,试作说明。
答:1.在外设向8237A发DMA请求,8237A向CPU发总线请求得到CPU总线允许时,获得了总
线控制权就作为总线主模块工作。
2.当CPU把数据送到8237A的寄存器或者从8237A的寄存器取出时,8237A就象I/O接口一样作为总线的从模块工作。
3.主模块工作时的控制信号:DREQx有效,HRQ高,HLDA高,DACKx有效,AEN高,IOR、MEMW或IOW、MEMR有效,16位地址送地址总线。从模块工作时的控制信号: CS和HRQ为低,A3~A0为某一确定值,IOR或IOW有效。
7864629.docxx - 22 - 作者:喻其山
7.20 8237A有哪几种工作模式?各自用在什么场合?
答:1.8237A有4种工作模式:单字节传输模式、块传输模式、请求传输模式、级联传输模式。
2.单字节传输模式用于单个字节的DMA输入/输出;块传输模式用于连续进行多个字节的传输;请求传输模式用于受接口控制的连续字节传输;级联传输模式用于多片主从式DMA系统中的主片的工作模式。 7.21 什么叫DMA控制器的自动预置功能?这种功能是用得很普遍的,举一个例子说明它的使用场合。
答:1.自动预置功能就是DMA控制器某通道在当前字节计数器的计数值到达0时,当前地址寄存
器和当前字节计数器会从基本地址寄存器和基本字节计数器中自动重新取得新值,从而又可以进入下一个数据传输过程。
2.如IBM PC/XT中,8237A的通道0用于对动态RAM进行刷新,就设置为自动预置功能。从头到尾进行一遍刷新后,就又可以自动重新再来若干遍刷新,保持数据不从动态RAM中丢失。用于同一内存地址的数据块重复传输中。 7.22 用DMA控制器进行内存到内存的传输时,有什么特点?
答:固定用通道0的地址寄存器存放源地址,而用通道1的地址寄存器和字节计数器存放目的地址
和计数值。传输时,目的地址和计数值象通常一样进行加1减1操作,源地址的值可通过控制寄存器的D1位设置,若为1则不变。另外用暂存器作为数据传输时DMA的数据暂存用。另外,DMA控制器进行内存到内存的传输是通过设置控制寄存器的D0=1来设置的。 7.23 DMA控制器8237A是怎样进行优先级管理的?
答:8237A有两种优先级管理方式:固定优先级管理方式,优先级高低固定为:通道0、1、2、3。
循环优先级管理方式,通道的优先级依次循环,当某通道进行一次传输后,其优先级变为最低,而其相邻的高一号通道的优先级变为最高。 7.24 设计8237A的初始化程序。8237A的端口地址为0000~000FH,设通道0工作在块传输模式,地址
加1变化,自动预置功能;通道1工作于单字节读传输,地址减1变化,无自动预置功能;通道2、通道3和通道1工作于相同方式。然后对8237A设控制命令,使DACK为高电平有效,DREQ为低电平有效,用固定优先级方式,并启动8237工作。 答: MOV AL,04H
MOV DX,DMA+8 ;DMA为端口首地址0000H,DMA+8为控制寄
;存器端口号
OUT DX,AL ;输出控制命令,关闭8237A MOV AL,00 MOV DX,DMA+0DH ;DMA+0DH为总清命令端口号 OUT DX,AL ;发总清命令(即复位命令) MOV DX,DMA+0BH ;DMA+0BH为模式寄存器的端口号 MOV AL,98H OUT DX,AL ;对通道0选择模式,模式字为98H:块读传输模
;式,地址加1变化,自动预置功能
MOV AL,69H OUT DX,AL ;对通道1选择模式,模式字为69H:单字节读传
;输,地址减1变化,无自动预置功能
MOV AL,6AH OUT DX,AL ;对通道2选择模式,模式字为6AH:功能同通道1 MOV AL,6BH OUT DX,AL ;对通道3选择模式,模式字为6BH:功能同通道1 MOV DX,DMA+8 MOV AL,0C0H ;控制字格式为C0H: DACK高电平有效,DREQ
;低电平有效,固定优先级,启动工作
OUT DX,AL MOV DX,DMA+0FH ;DMA+0FH为综合屏蔽命令端口号 MOV AL,0 OUT DX,AL ;去除四个通道的屏蔽
7864629.docxx - 23 - 作者:喻其山
┆
7.25 概述怎样用软件方法和硬件方法来进行定时。
答:① 软件方法就是根据所需要的时间常数来设计一个延迟子程序。当延迟子程序执行完后,可
直接执行下面的操作,也可用输出指令输出一个信号作为定时输出。 ② 硬件方法使用计数器/定时器。根据需要的定时时间,用指令对计数器/定时器设置定时常数,
并用指令启动计数器/定时器,于是计数器/定时器开始计数,计到确定值时,便自动产生一个定时输出。 7.26 8253计数器/定时器中,时钟信号CLK、门脉冲信号GATE分别起什么作用?
答:时钟信号CLK决定了计数的速率,是计数减1的依据。而门脉冲信号GATE是作为对时钟的
控制信号,以控制计数的启停。 7.27 说明8253在6种工作方式下的特点,并举例说明使用场合。
答:① 模式0、模式1、模式4、模式5为软件启动或硬件启动的不自动重复的计数方式;模式2、
模式3为即可软件启动也可硬件启动的自动重复的定时器方式。
② 作为计数器时,8253在GATE控制下进行减1计数,减到终值时,输出一个信号,至此计
数过程便结束。作为定时器工作时,8253在门控GATE控制下进行减1计数,减到终值时,又自动装入初值,重新作减1计数,于是输出端会不间断地产生为时钟周期整数倍的定时间隔。
③ 定时方式一般用于实时控制及周期性操作中,如日时钟定时、扬声器发声、波特率发生器
等场合。计数方式则用于外部事件的计数,如生产线上的产品计数等场合。 7.28 8253工作于模式4和模式5时有什么不同?
答:模式4是用软件触发启动,GATE为低电平时停止计数;而模式5则用门控GATE的上升沿触
发即硬件触发启动,GATE为低电平时不影响计数。 7.29 编程将8253计数器0设置为模式1,计数初值为3000H;计数器1设置为模式2,计数初值为2010H;
计数器2设置为模式4,计数初值为4030H;地址设为0070H、0072H、0074H、0076H。 答: MOV AL,32H ;设置计数器0为模式1
OUT 76H,AL MOV AX,3000H ;写计数初值 OUT 70H,AL MOV AL,AH OUT 70H,AL
MOV OUT MOV OUT MOV OUT MOV OUT MOV OUT MOV OUT
AL,74H ;设置计数器1为模式2 76H,AL
AX,2010H ;写计数初值 72H,AL AL,AH 72H,AL
AL,0B8H ;设置计数器2为模式4 76H,AL
AX,4030H ;写计数初值 74H,AL AL,AH 74H,AL
7.30 CPU对应DMA控制器的总线请求响应要比中断请求响应快,请分析其原因。
答:当CPU检测到总线请求信号后在当前总线周期的T4状态或TI状态的下降沿就可响应而出让
总线,并发总线响应信号HLDA。而当CPU检测到INTR请求时,则必须要等到当前指令执行完后才能发第一个INTA负脉冲,而且中断响应需两个INTA负脉冲才可组成一个完整的中断响应信号。因此总线请求响应要比中断请求响应快。