现代微型计算机原理与接口技术习题解答接口部分.docx
《现代微型计算机原理与接口技术习题解答接口部分.docx》由会员分享,可在线阅读,更多相关《现代微型计算机原理与接口技术习题解答接口部分.docx(48页珍藏版)》请在冰豆网上搜索。
![现代微型计算机原理与接口技术习题解答接口部分.docx](https://file1.bdocx.com/fileroot1/2022-11/27/56115242-1b00-4cff-8e60-61fc8d1082fa/56115242-1b00-4cff-8e60-61fc8d1082fa1.gif)
现代微型计算机原理与接口技术习题解答接口部分
习题五
1.接口电路与外部设备之间传送的信号有哪几种?
传输方向怎样?
数据信号:
对于输入设备,数据信号从外设通过接口送往总线,对于输出设备,数据信号从总线通过接口发往外部设备。
状态信号:
状态信号表明外部设备当前的工作状态,用来协调CPU与外部设备之间的操作。
状态信号总是从外部设备通过接口发往总线。
控制信号:
控制信号是CPU向外设发出的命令,它指定设备的工作方式,启动或停止设备。
控制信号从CPU通过接口发往外部设备。
2.接口电路有哪些功能?
哪些功能是必需的?
接口电路可以具备:
设备选择功能、信息传输功能、数据格式转换功能、联络功能、中断管理功能、复位功能、可编程功能和错误检测等功能。
其中设备选择功能和信息传输功能是每一个接口电路所必备的。
其他的功能是否需要则由设备的特点和工作方式决定。
3.I/O端口的编址有哪几种方法?
各有什么利弊?
80X86系列CPU采用哪种方法?
I/O端口的编址有两种不同的方式。
I/O端口与内存统一编址:
把内存的一部分地址分配给I/O端口,一个8位端口占用一个内存单元地址。
已经用于I/O端口的地址,存储器不能再使用。
I/O端口与内存统一编址后,访问内存储器单元和I/O端口使用相同的指令,这有助于降低CPU电路的复杂性,并给使用者提供方便。
但是,I/O端口占用内存地址,相对减少了内存可用范围。
而且,由于难以区分访问内存和I/O的指令,降低了程序的可读性和可维护性。
I/O端口与内存独立编址:
这种编址方法中,内存储器和I/O端口各自有自己独立的地址空间。
访问I/O端口需要专门的I/O指令。
80x86CPU采用I/O端口独立编址方式。
4.按照传输信号的种类,I/O端口有几种?
它们信号的传输方向怎样?
按照传输信号的种类,I/O端口有三种:
数据端口:
数据信息从端口输入CPU(输入设备接口),或者从CPU写入端口(输出设备接口)。
状态端口:
外设状态信息从端口输入CPU;
控制端口:
命令信息从CPU写入端口。
5.I/O端口译码电路的作用是什么?
在最小模式和最大模式下分别有哪些输入信号?
I/O端口译码电路用于产生端口的读写选择信号。
在最小模式下,译码电路接受来自总线的地址信号(16位),
(=0),
或者
信号。
最大模式下,译码电路接受地址信号(16位),
或者
信号。
6.外部设备数据传送有哪几种控制方式?
从外部设备的角度,比较不同方式对外部设备的响应速度。
外部设备数据传送有以下四种控制方式。
直接传送方式(也称为无条件传送方式、同步传送方式):
这种情况下,外部端口完全被动地等待CPU的访问,没有确定的响应速度,响应时间取决于CPU忙碌的程度以及程序对外部设备控制采取的策略。
查询方式:
如果CPU在某一时刻只对一个外设采用查询方式进行数据传输,CPU的响应延迟约为3~10个指令周期。
响应速度快于中断方式,慢于DMA方式。
中断方式:
CPU的响应延迟平均为几十个指令周期,慢于查询方式,但是这种方式可以同时管理多个外部设备。
DMA方式:
外部端口的传输请求由DMA控制器响应,由于DMAC是一个专用于传输控制的电路,任务单一,不发生DMA传输竞争时,响应延迟仅为1~2个DMAC使用的时钟周期,远快于中断方式和查询方式。
7.叙述一次查询式输出过程中,接口内各电路、信号的状态变化过程。
一个数据的查询式输出过程由二个阶段组成:
CPU从接口反复读取状态字:
由地址译码电路产生状态端口选择信号,该信号不影响接口内部的状态。
外部设备输出完成后,返回“确认”信号,该信号将状态寄存器相关位(READY)置位。
如状态字表明外设已处于“就绪”状态,则向数据端口传送数据。
由地址译码电路产生的数据端口选通信号一方面将数据总线上的数据写入数据寄存器,同时清除状态寄存器中的相关位(READY),向输出设备发出输出启动信号。
有的输出接口设有控制端口,输出启动信号通过写控制端口产生。
8.比较程序中断方式和查询方式的区别,根据比较,指出中断工作方式的优缺点。
中断方式:
外部设备工作完成后,通过“中断请求”信号“主动”向CPU“报告”。
查询方式:
外部设备工作完成后,状态信号储存在接口电路内,被动地等待CPU来读取。
根据上述比较,可以得到中断工作方式的如下特点:
优点:
1)CPU能够及时了解外部设备的状态,从而对外部设备IO请求进行及时处理。
2)由于CPU“被动”地等待外部设备的“中断请求”,外部设备进行输入/输出操作时,CPU可以同时执行其他的程序,CPU和外部设备“并行”工作。
3)由于同样的原因,在中断方式下,CPU可以同时管理多台外部设备,CPU的效率得到提高。
缺点:
1)用中断方式需要CPU增加相应的管理逻辑,增加了CPU电路的复杂性。
2)由于CPU“被动”地接收“中断请求”信号,CPU必须通过与外部的一个联络过程才能知道是那一个设备在申请中断,这增加了响应时间。
为了从当前任务转移到中断服务,CPU必须保护原有的运行环境,进行“任务”的“切换”,这也会增加响应时间。
3)有较多的设备使用中断方式时,会产生“中断申请”的“竞争”。
这一方面降低了响应速度,另一方面增加了管理的复杂性。
9.比较DMA方式和程序中断方式的区别,根据比较,指出DMA工作方式的优缺点。
中断方式:
外部设备每进行一个数据的输入/输出,都要通过“中断申请”要求CPU进行处理。
CPU通过执行一段“中断服务程序”完成数据的传输。
DMA方式:
CPU通过对DMAC的初始化,启动一个数据块的传输操作。
之后的数据传输通过信号的联络,在外设接口和存储器之间进行,CPU只需简单地让出总线,而无需其他操作。
根据上述比较,可以得到DMA工作方式的如下特点:
优点:
1)对于CPU而言,它的任务仅仅是在一个数据块传输之前对DMAC进行初始化,CPU用于传输控制的操作达到最小(不考虑与通道/IO处理器方式的比较),CPU的效率最高。
CPU与外设“并行”工作。
2)外部设备一个数据输入/输出完成后,向DMAC申请进行数据传输,响应时间仅为DMAC的1~3个时钟周期。
响应速度达到最快,可以满足高速传输的需要。
缺点:
1)实现DMA控制需要增加DMA控制器和总线控制逻辑,增加了系统的复杂性。
2)DMA传输需要占用总线,并且具有较高的“优先级”。
这使得系统对其他设备的响应速度不能得到明确的保证。
10.某输入设备接口数据端口、状态端口、控制端口地址分别为70H,71H,72H。
状态端口D5=1表示输入完成,控制端口D7=1表示启动设备输入(输入完成后由设备清除该位)。
从该设备输入100个字节数据,存入以BUFFER为首地址的缓冲区。
如果启动该设备1秒后仍未完成一次输入,则视为超时错,显示出错信息后返回。
分别用8086汇编语言和C语言编写完成上述功能的I/O程序。
汇编语言程序:
DATASEGMENT
BUFFERDB100DUP(?
)
ERRORDB13,10,“OVERTIME!
”,13,10,“$”
DATAENDS
。
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,100
LEABX,BUFFER
ONE:
XORDX,DX;DX用作响应计时器,初值0
MOVAL,80H
OUT72H,AL;启动输入
W:
INAL,71H
INCDX;记录延迟时间
TESTAL,00100000B;测试完成位
JNZREAD;输入完成,转READ读取数据
CMPDX,50000;假设循环50000次时间为1秒
JBW;未超时,继续测试
JMPOVERTIME;超过1秒,报告出错
READ:
INAL,70H;读入数据
MOV[BX],AL;数据存入缓冲区
INCBX;修改指针
LOOPONE;100个数据尚未输入完成,转ONE继续
JMPDONE;100个数据输入完成,转DONE结束程序
OVERTIME:
LEADX,ERROR
MOVAH,9
INT21H;响应超时,显示出错信息
DONE:
MOVAX,4C00H
INT21H;返回OS
CODEENDS
ENDSTART
C语言程序:
main()
{inti,status,time,buffer[100]。
for(i=0。
i<100。
i++)
{outportb(0x72,0x80)。
/*启动输入*/
for(time=0。
time<20000。
time++)
{status=inportb(0x71)。
/*读状态*/
if(status&0x20)
{buffer[i]=inportb(0x70)。
exit。
}/*读数据,保存*/
}
if(time>=20000)
{printf(“\nOverTime!
\n”)。
exit。
}/*超时报错*/
}
}
11.某输出设备数据端口、状态端口地址分别为220H,221H。
状态端口D0=1表示输出完成。
将数据段中以STRING为首地址的20个字符(用七位ASCII代码存储)添加水平和垂直校验发送到该外部设备。
用8086汇编语言编写完成上述功能的I/O程序。
汇编语言程序:
DATASEGMENT
STRINGDB20DUP(?
)
SUMDB0
DATAENDS
。
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,20
LEABX,STRING
MOVSUM,0。
垂直校验码初值为0
ONE:
MOVDX,221H。
DX置为状态端口地址
INAL,DX
TESTAL,00000001B;测试输出完成位
JZONE;未完成,转ONE继续读取状态
MOVAL,[BX];从字符串取出一个字符的ASCII代码
ANDAL,07FH;清除最高位,准备置入校验位
JPEOUTPUT;判代码奇偶属性,
ORAL,80H;奇数个“1”,最高位置1(偶校验)
OUTPUT:
MOVDX,220H
OUTDX,AL;输出添加了校验位的代码
XORSUM,AL;生成垂直校验位
INCBX;修改指针
LOOPONE;20个数据尚未输出完成,转ONE继续
MOVDX,221H;输出垂直校验代码
LAST:
INAL,DX
TESTAL,00000001B
JZLAST
MOVAL,SUM
MOVDX,220H
OUTDX,AL
DONE:
MOVAX,4C00H
INT21H;返回OS
CODEENDS
ENDSTART
12.试画出矩阵式键盘查询的程序流程图。
上述流程中假设键盘为8×8结构,
如果有键按下,返回它的8位扫描码。
其中:
最低3位为该键所在列,次低3位为该键所在行,最高2位为0。
如果没有键按下,返回8位“1”。
13.试画出公用端口多位LED输出的程序流程图。
习题六
1.什么叫中断?
有哪几种不同类型的中断?
由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。
该程序执行完成后,CPU接着执行被暂停的程序。
这个过程称为中断。
根据中断源的位置,有两种类型的中断。
有的中断源在CPU的内部,称为内部中断。
大多数的中断源在CPU的外部,称为外部中断。
根据中断引脚的不同,或者CPU响应中断的不同条件,也可以把中断划分为可屏蔽中断和不可屏蔽中断两种。
2.什么是中断类型?
它有什么用处?
用若干位二进制表示的中断源的编号,称为中断类型。
中断类型用来区分不同的中断,使CPU能够在中断响应时调出对应的中断服务程序进行中断处理。
3.有哪几种确定中断优先级的方法?
说明每一种方法各自的优劣之处。
确定中断优先权有四种可选的方法。
(1)软件查询法:
采用程序查询的方法确定中断服务的顺序。
这种方法中断逻辑最简单(基本上不需要外部中断逻辑),优先级可以灵活设置,但中断响应所需时间最长。
(2)分类申请法:
CPU分设二个中断申请信号的输入引脚。
这种方法需要CPU提供条件。
(3)链式优先权排队:
菊花链法。
这种方法需要的外部中断逻辑比较简单,容易实现,但是设备较多时信号延迟大,对设备故障敏感。
(4)可编程中断控制器:
“向量”优先权排队专用电路。
这种方法功能最全面,控制灵活,可以通过程序设定中断优先权为固定的或循环的,但需要增加专用的中断控制器。
4.什么是中断嵌套?
使用中断嵌套有什么好处?
对于可屏蔽中断,实现中断嵌套的条件是什么?
CPU在处理级别较低的中断过程中,出现了级别较高的中断请求。
CPU停止执行低级别中断的处理程序而去优先处理高级别中断,等高级别中断处理完毕后,再接着执行低级别的未处理完的中断处理程序,这种中断处理方式称为多重(级)中断或中断嵌套。
使用中断嵌套可以使高优先级别的中断得到及时的响应和处理。
对于可屏蔽中断,由于CPU在响应中断时已将IF清零,所以一定要在中断处理程序中加入开中断指令,才有可能进行中断嵌套。
5.什么叫中断屏蔽?
如何设置I/O接口的中断屏蔽?
用程序的方法使某些中断源的中断请求不能够发送到CPU,或者虽然能够发送但是不能得到响应,这种方法称为中断屏蔽。
在外设的接口内增设一个中断屏蔽触发器(可以用D触发器实现),该触发器的
端与中断请求信号相“与”后连接到INTR。
当
=0时,中断请求不能发往INTR。
通过设定中断屏蔽触发器的状态,可以控制中断请求信号是否能够送到INTR端。
置IF=0,可以使80x86CPU不响应来自INTR的可屏蔽中断请求。
6.
什么是中断向量?
中断类型为1FH的中断向量为2345H:
1234H,画图说明它在中断向量表中的安置位置。
中断服务程序的入口地址称为中断向量。
中断类型为1FH,它的中断向量放置在1FH×4=0000:
7CH开始的位置上。
如右图。
7.叙述一次可屏蔽中断的全过程。
(1)中断源请求中断
外部中断源通过INTR引脚向CPU请求中断。
(2)中断响应
中断源提出中断请求后,如果
•CPU处于允许中断状态(IF=1);
•没有不可屏蔽中断请求和总线请求;
•当前指令执行结束。
则转入中断响应周期。
在中断响应周期:
•CPU取得中断源的中断类型;
•将标志寄存器FLAGS和CS、IP(断点)先后压入堆栈保存;
•清除自陷标志位TF和中断允许标志位IF;
•读中断向量表,获得相应的中断服务程序入口地址,转入中断服务程序。
(3)中断服务
中断服务程序的主要内容包括:
•保护现场
•开中断
•中断处理
•关中断
•恢复现场
(4)中断返回
8.简要叙述8259A内部IRR,IMR,ISR三个寄存器各自的作用。
三个寄存器长度均为8位。
IRR用来记录引脚IR7~IR0上由外部设备送来的中断请求信号。
当外部中断请求线IRi变为有效时,IRR中与之对应的第i位被置1。
IMR用于设置对中断请求的屏蔽信号。
此寄存器的第i位被置1时,与之对应的外部中断请求线IRi被屏蔽,不能向CPU发出INT信号。
可通过软件设置IMR内容,确定每一个中断请求的屏蔽状态。
ISR用于记录当前正在被服务的所有中断级,包括尚未服务完而中途被更高优先级打断的中断级。
若CPU响应了IRi中断请求,则ISR中与之对应的第i位置1。
ISR用于中断优先级管理。
9.8259A是怎样进行中断优先权管理的?
8259A通过以下两种途径实现对中断优先权的管理:
(1)通过设置中断屏蔽寄存器IMR,可以屏蔽某些中断请求,从而动态地改变各请求端的优先级别。
(2)8259A响应某个中断请求之后,将ISR寄存器对应位置1。
如果后续的中断请求级别低于正在响应的中断请求,则该中断不能立即被响应。
反之,如果新的中断请求级别高于正在响应的中断请求,则允许进行中断嵌套。
中断服务结束时,应将ISR寄存器对应位清零。
10.特殊全嵌套方式有什么特点?
它的使用场合是什么?
特殊全嵌套方式一般用于级联方式下的8259A主片。
如果8259A主片在一次中断处理尚未结束时,收到了来自同一个引脚的第二次中断请求,并且该8259A采用普通全嵌套方式,则它不会响应来自同一个引脚的第二次中断请求。
如果该8259A采用特殊全嵌套方式,就会响应该请求(中断嵌套),从而可以及时响应连接在同一从片8259A上,并且相对有较高优先级别的中断请求。
11.向8259A发送“中断结束”命令有什么作用?
8259A有哪几种中断结束方式?
分析各自的利弊。
中断服务完成时,必须给8259A一个命令,使这个中断级别在ISR中的相应位清“0”,表示该中断处理已经结束,允许响应新的较低级别的中断。
这个命令称为“中断结束”命令。
8259A有两种不同的中断结束方式。
(1)自动中断结束方式(AEOI)
8259A在中断响应周期内自动清除ISR中对应位。
这种方式使用简单,但是不能充分实现中断的优先权管理。
这种方式只能用在系统中只有一个8259A,且多个中断不会嵌套的情况。
(2)非自动中断结束方式(EOI)
从中断服务程序返回前,在程序里向8259A输出一个中断结束命令(EOI),把ISR对应位清“0”。
这种方式可以有效地实现中断优先权的管理,从而保证高优先级的中断可以得到及时响应。
但是,如果在程序里忘了将ISR对应位清零,那么,8259A将不再响应这个中断以及比它级别低的中断请求。
12.某系统中有两片8259A,从片的请求信号连主片的IR2引脚,设备A中断请求信号连从片IR5引脚。
说明设备A在一次I/O操作完成后通过两片8259A向8086申请中断,8086CPU通过两片8259A响应中断,进入设备A中断服务程序,发送中断结束命令,返回断点的全过程。
•设备A通过从片IR5引脚向从片发出中断请求;
•从片将IRR5置“1”,并通过INT(与主片IR2相连)向主片发出中断请求;
•主片将IRR2置“1”,通过INT(与CPU的INTR相连)向CPU发出中断请求;
•CPU通过第一个
向主片和从片响应中断请求;
•主片8259A在CAS0~CAS2上发出代码“010”,表示连接在IR2上的从片中断被响应,同时主片还把本片ISR2置“1”,把本片IRR2清“0”;
•从片收到第一个
和主片CAS0~CAS2上发来的010代码后,将本片ISR5置“1”,同时把本片IRR5清“0”。
收到第二个
后,将本片IRR5对应的中断类型通过数据总线发往CPU;
•CPU进入设备A的中断服务程序,在程序中先后对主片和从片发出中断结束命令,两个芯片内的ISR2和ISR5先后被清零。
•中断服务结束,返回断点继续执行。
13.某8086系统用3片8259A级联构成中断系统,主片中断类型号从10H开始。
从片的中断申请连主片的IR4和IR6引脚,它们的中断类型号分别从20H、30H开始。
主、从片采用电平触发,嵌套方式,普通中断结束方式。
请编写它们的初始化程序。
假设主片端口地址为10H,12H。
从片的端口地址分别为18H,1AH和1CH,1EH。
……
MOVAL,00011001B;主片ICW1
OUT10H,AL;电平触发,级连方式
MOVAL,10H;主片ICW2
OUT12H,AL;主片中断类型
MOVAL,01010000B;主片ICW3
OUT12H,AL;IR4,IR6连有从片
MOVAL,00010001B;主片ICW4
OUT12H,AL;特殊全嵌套,非自动中断结束
MOVAL,00011001B;从片ICW1
OUT18H,AL;电平触发,级连方式
MOVAL,20H;从片ICW2
OUT1AH,AL;从片中断类型
MOVAL,00000100B;从片ICW3
OUT1AH,AL;本片连接在主片IR4引脚上
MOVAL,00000001B;从片ICW4
OUT1AH,AL;非特殊全嵌套,非自动中断结束
MOVAL,00011001B;从片ICW1
OUT1CH,AL;电平触发,级连方式
MOVAL,30H;从片ICW2
OUT1EH,AL;从片中断类型
MOVAL,00000110B;从片ICW3
OUT1EH,AL;本片连接在主片IR6引脚上
MOVAL,00000001B;从片ICW4
OUT1EH,AL;非特殊全嵌套,非自动中断结束
注意:
(1)由于8086系统有16根数据线,各8259A的端口地址均为偶数(假设各8259A的数据线连接在8086系统的低8位数据线上)。
(2)主片用特殊全嵌套,从片用一般全嵌套。
14.给下面的8259A初始化程序加上注释,说明各命令字的含义。
MOVAL,13H;ICW1:
边沿触发,单片8259A
OUT50H,AL;
MOVAL,08H;ICW2:
中断类型高5位为00001
OUT51H,AL;
MOVAL,0BH;ICW4:
非特殊全嵌套,缓冲方式,主片,非自动中断结束
OUT51H,AL;
15.设8259A端口地址为20H和21H,怎样发送清除ISR3的命令?
为了清除ISR3,需要通过OCW2发送特殊的中断结束命令,使SL=1,EOI=1,L2L1L0=011。
指令如下:
MOVAL,01100011B
OUT20H,AL
16.图4-17能否直接用于8086系统?
为什么?
图4-17不能直接用于8086系统,原因是:
(1)多个设备的中断请求如果直接送往CPU,应采用“线或”的方法,每个接口的中断请求信号应由“OC门(集电极开路门)”以“负逻辑”的方式连接,如下图。
(2)电路没有解决中断优先权的问题。
CPU用
信号响应中断时,会将所有正在申请中断的接口的请求信号清除