CH06 输入输出控制习题与思考题1.CPU与外设之间的数据传输控制方式有哪几种?何谓程序控制方式?它有哪两种基本方式?请分别用流程图的形式描述其处理过程。
解答:CPU与外设之间的数据传输控制方式有三种:程序控制方式、中断方式、DMA方式。
程序控制方式:程序方式就是指用程序来控制进行输入输出数据传输的方式。
程序控制方式的两种基本方式:无条件程序控制方式,条件程序控制方式;流程图:2.采用用查询方式将数据区DATA开始的100个字节数据在FCH端口输出,设状态端口地址为FFH,状态字的D0位为1时表示外设处于“忙”状态。
试编写查询程序。
解答:DA TA SEGMENTBUFF DB 100 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFF;送缓冲区指针MOV CX,100;送计数初值WAIT1:IN AL,0FFH;查询状态,若为1,则等待TEST AL,01HJNZ WAIT1MOV AL, [BX]OUT 0FCH, AL ;输出一个数据INC BXLOOP WAIT1MOV AH,4CHINT 21HCODE ENDSEND START3.何谓中断优先级,它对于实时控制有什么意义?有哪几种控制中断优先级的方式?解答:当系统中有多台设备(即多个中断源)同时提出中断请求时,就有先响应谁的问题,也就是如何确定优先级的问题。
一般来讲,CPU总是先响应具有较高优先级的设备。
解决优先级问题的方法一般有三种:软件查询法、简单硬件方式和专用硬件方式。
4.什么叫DMA传送方式? 其主要步骤是什么?试比较DMA传输、查询式传输及中断方式传输之间的优缺点和适用场合?解答:在DMA方式下,外部设备利用专门的接口电路直接和存储器进行高速数据传送,而不需经过CPU,数据传输的速度基本上取决于外设和存储器的速度,传输效率大大提高。
DMA主要步骤:一般来说,完成一次DMA传输的主要步骤为:(1)当外设准备就绪时,它向DMA控制器发DMA请求,DMA控制器接到此信号后,经过优先级排队(如需要的话),向CPU发DMA请求(送至CPU的HOLD引脚)。
(2)CPU在完成当前总线周期后会立即对DMA请求做出响应。
CPU的响应包括两个方面:一方面将控制总线、数据总线和地址总线置高阻,另一方面将有效的HLDA信号加到DMA控制器上,以此来通知DMA控制器,CPU已经放弃了对总线的控制权。
(3)DMA控制器收到HLDA信号后,即取得了总线控制权。
这时,它往地址总线上发送地址信号(指出本次数据传输的位置),同时,发出相应的读/写信号(决定是进行输入还是输出操作)。
(4)每传送一个字节,DMA控制器会自动修改地址寄存器的内容,以指向下一个要传送的字节。
同时,修改字节计数器的内容,判别本次传输是否结束。
(5)当字节计数器的值达到计数终点时,DMA过程结束。
DMA控制器通过使HOLD 信号失效,撤消对CPU的DMA请求。
CPU收到此信号,一方面使HLDA无效,另一方面又重新开始控制总线,实现正常的运行。
程序方式的特点:使用方便,系统开销不大,但速度较慢。
适用于设备不多且实时响应要求不高的小系统。
中断方式:CPU与外设之间可以并行工作,因此大提高CPU的工作效率,但一系列的保护(恢复)现场的工作,仍要花费不少CPU的时间。
适用于设备较多且实时响应要求较高的系统。
DMA方式:需要增加DMA控制器,适用于大量高速的数据传送。
5.什么是中断向量?中断向量表的功能是什么?已知中断源的中断类型码分别是84H和FAH,它们所对应的中断向量分别为:2000H:1000H, 3000H:4000H, 这些中断向量应放在中断向量表的什么位置?如何存放?编程完成中断向量的设置。
解答:中断向量----中断服务程序的入口地址;中断向量表----存放中断向量的表,中断向量与中断类型码有对应关系。
84H的位置:210H~213H;FAH的位置:3E8H~3EBH0000:210H 00 10 00 200000:3E8H 00 40 00 30PUSH DSMOV DX,2000HMOV DS,DXMOV DX,1000HMOV AL,84HMOV AH,25HINT 21H;MOV DX,3000HMOV DS,DXMOV DX,4000HMOV AL,0FAHMOV AH,25HINT 21HPOP DS6.试结合8086/8088CPU可屏蔽中断的响应过程,说明向量式中断的基本处理步骤。
解答:⑴接口发中断请求信号(中断请求),若有中断优先级判别,进行判优;⑵当前指令执行完后,CPU进行中断回答(中断响应);⑶中断类型号N送CPU;⑷当前的PSW、CS、IP推入堆栈;⑸清除IF和TF;⑹(4*N)作为IP,(4*N+2)作为CS;⑺中断子程序执行(中断服务);⑻开中断;⑼IRET指令使IP、CS和PSW弹出堆栈;⑽返回被中断的程序(中断返回)。
7.在中断响应总线周期中,第一个INTA脉冲向外部电路说明什么?第二个INTA脉冲呢?解答:第一个INTA脉冲----·使IRR的锁存功能失效。
(目的是防止此时再来中断导致中断响应的错误),到第二个INTA时恢复有效。
·使ISR的相应位置位,表示已为该中断请求服务。
·使IRR相应位清0。
第二个INTA脉冲----·送中断类型码,中断类型码由用户编程和中断请求引脚的编码共同决定,详见编程部分。
·如果8259A工作在中断自动结束方式,则此时清除ISR的相应位。
8.中断处理的主要步骤有哪些?试说明每一步的主要动作。
9.如果8259A按如下配置:不需要ICW4,单片,中断请求边沿触发,则ICW1的值为多少?。
如要求产生的中断类型码在70H~77H之间,则ICW2的值是多少?解答:ICW1=×××1 0×10B;ICW2=0111 0×××B10.在上题中,假设8259A的端口地址为00H和01H,采用中断自动结束,固定优先级,完成对该8259A的初始化。
解答:初始化程序如下。
MOV AL,×××1 0×10B;OUT 00H,AL;ICW1MOV AL,0111 0×××B;OUT 01H,AL;ICW2(MOV AL,0000 0×11B;ICW4OUT 01H,AL;前提ICW1=×××1 0×11B)MOV AL,00HOUT 00H,AL;OCW211.如果8259A用在80386DX系统中,采用一般的EOI,缓冲模式,主片,特殊全嵌套方式,则ICW4的值是什么?解答:ICW4=0001 1101B12.如果OCW2等于67H,则允许何种优先级策略?为什么?解答:67H=0110 0111B,固定优先级。
13.某系统中CPU为8088,外接一片8259A作为中断控制器,五个中断源分别从IR0~IR4以脉冲方式引入系统,中断类型码分别为48H~4CH,中断服务子程序入口的偏移地址分别为2500H,4080H,4C05H,5540H和6FFFH,段地址均是2000H,允许它们以非中断自动结束方式,固定优先级工作,请完成:①画出硬件连接图,写出此时8259A的端口地址;中断源A7A6A5A4A3A2A1②编写8259A的初始化程序,(包括对中断向量表的设置)。
解答:①②;中断向量表的设置PUSH DSMOV DX,2000HMOV DS,DXMOV DX,2500HMOV AX,2548HINT 21HMOV DX,4080HMOV AX,2549HINT 21HMOV DX,4C05HMOV AX,254AHINT 21HMOV DX,5540HMOV AX,254BHINT 21HMOV DX,6FFFHMOV AX,254CHINT 21HPOP DS;8259的初始化MOV AL,×××1 0×11B(13H);送ICW1,所有×的位全取0OUT 20H,ALMOV AL,48H ;送ICW2,即中断类型码的高5位OUT 21H,ALMOV AL,000×××01B(01H) ;送ICW4,所有×的位全取0OUT 21H,ALMOV AL,1110 0000B(E0H);送OCW1OUT 21H,AL14.某系统中设置两片8259A级联使用,从片接至主片的IR2,同时,两片芯片的IR3上还分别连接了一个中断源,要求电平触发,普通EOI结束。
编写全部的初始化程序。
(端口地址可用自定)解答:主片从片;8259的初始化(主片)MOV AL ,×××1 1×01B (19H ) ;送ICW 1,所有×的位全取0 OUT 20H ,ALMOV AL ,40H ; 送ICW 2,即中断类型码的高5位 OUT 21H ,ALMOV AL ,0000 0100B ; 送ICW 3 OUT 21H ,ALMOV AL ,0001 ××01B ;送ICW 4,所有×的位全取0OUT 21H ,ALMOV AL,1111 0011B (F3H );送OCW1 OUT 21H,AL;8259的初始化(从片)MOV AL ,×××1 1×01B (19H ) ;送ICW 1,所有×的位全取0 OUT 20H ,ALMOV AL ,48H ; 送ICW 2,即中断类型码的高5位 OUT 21H ,ALMOV AL ,×××× ×010B (02H ) ; 送ICW 3 OUT 21H ,ALMOV AL ,0000 ××01B ;送ICW 4,所有×的位全取0OUT 21H ,ALMOV AL,1111 0111B (F7H );送OCW1 OUT 21H,AL15.设8253的通道2工作在计数方式,外部事件从CLK 2引入,通道2计满500个脉冲向CPU 发出中断请求,CPU 响应这一中断后重新写入计数值,开始计数,以后保持每2秒钟向CPU发出一个中断请求。
假设条件如下:①外部计数事件频率为1kHz;②中断类型码为54H;试完成硬件连接图并编写完成该任务的全部程序(包括芯片的初始化,中断向量的设置,中断服务子程序)。