用译码器的方法给io接口的编址方式编址,电路设计好后,io接口的编址方式地址是什么的?

为什么有时候可以使两个端口对应一个地址
时间: 4:00:20
&&&&&&&&第一章微型计算机概述&&&&1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?&&&&答:①微处理器是微型计算机的核心,是微型计算机的一部分。它是集成在一块芯片上的CPU,由运算器和控制器组成。&&&&②微型计算机包括微处理器、存储器、I/O接口和系统总线,是微型计算机系统的主体。&&&&③微型计算机系统包括微型计算机、外设及系统软件三部分。&&&&1.2 CPU在内部结构上由哪几部分组成?CPU应具备哪些主要功能?&&&&答:1.CPU在内部结构上由以下几部分组成:&&&&① 算术逻辑部件(ALU);&&&&② 累加器和通用寄存器组;&&&&③ 程序计数器(指令指针)、指令寄存器和译码器;&&&&④ 时序和控制部件。&&&&2.CPU应具备以下主要功能:&&&&① 可以进行算术和逻辑运算;&&&&② 可保存少量数据;&&&&③ 能对指令进行译码并执行规定的动作;&&&&④ 能和存储器、外设交换数据;&&&&⑤ 提供整个系统所需要的定时和控制;&&&&⑥ 可以响应其他部件发来的中断请求。&&&&1.3 累加器和其他通用寄存器相比,有何不同?&&&&答:许多指令的执行过程以累加器为中心;输入/输出指令一般也以累加器来完成。&&&&1.4 微处理器的控制信号有哪两类?&&&&答:一类是通过对指令的译码,由CPU内部产生的。这些信号由CPU送到存储器、I/O接口电路和其他部件。另一类是微型机系统的其他部件送到CPU的。通常用来向CPU发出请求。如中断请求、总线请求等。&&&&1.5 微型计算机采用总线结构有什么优点?&&&&答:首先是系统中各功能部件之间的相互关系变为各个部件面向总线的单一关系。其次是一个部件只要符合总线标准,就可以连接到采用这种总线标准的系统中,使系统功能得到扩充。&&&&1.6 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么,要靠什么来区分地址或数据?&&&&答:1.数据总线是双向三态;地址总线是单向输出三态。&&&&2.数据和地址复用时,必须有一个地址选通信号来区分该总线上输出的是地址还是数据。&&&&1.7 控制总线传输的信号大致有哪几种?&&&&答:包括CPU送往存储器和I/O接口的控制信号,如读信号、写信号、中断响应信号、存储器和I/O接口区分信号等。还包括其他部件送到CPU的信号,如时钟信号、中断请求信号、准备就绪信号等。&&&&&&&&第二章8086微处理器&&&&2.1 总线接口部件有哪些功能?请逐一进行说明。&&&&答:1.总线接口部件的功能是负责与存储器、I/O端口传送数据。&&&&2.具体讲:①总线接口部件要从内存取指令送到指令队列;&&&&②CPU执行指令时,总线接口部件要配合执行部件从指定的内存单元或者外设端口中取数据,将数据传送给执行部件,或者把执行部件的操作结果传送到指定的内存单元或外设端口中。&&&&2.2 8086的总线接口部件由哪几部分组成?&&&&答:4个段地址寄存器CS、DS、ES、SS;16位的指令指针寄存器IP;20位的地址加法器;6字节的指令队列。&&&&2.3 段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?&&&&答:1.该指令的物理地址=CS×10H+IP=21F00H。&&&&2.指向这一物理地址的CS值和IP值不是唯一的。&&&&2.4 8086的执行部件有什么功能?由哪几部分组成?&&&&答:1.8086的执行部件的功能是负责指令的执行。&&&&2.4个通用寄存器AX、BX、CX、DX;4个专用寄存器BP、SP、SI、DI;标志寄存器FLAGS和算术逻辑单元ALU。&&&&2.5 状态标志和控制标志有何不同?程序中是怎样利用这两类标志的?8086的状态标志和控制标志分别有哪些?&&&&答:1.不同之处在于:状态标志由前面指令执行操作的结果对状态标志产生影响,即前面指令执行操作的结果决定状态标志的值。控制标志是人为设置的。&&&&2.利用状态标志可进行计算和判断等操作。利用控制标志可对某一种特定功能(如单步操作、可屏蔽中断、串操作指令运行的方向)起控制作用。&&&&3.8086的状态标志有:SF、ZF、PF、CF、AF和OF计6个。&&&&8086的控制标志有:DF、IF、TF计3个。&&&&2.6 和传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点?&&&&答:1.传统的计算机在执行指令时,指令的提取和执行是串行进行的。CPU的总线接口部件和执行部件在提取和执行指令时是并行同时工作的。&&&&2.CPU的设计思想有力地提高了CPU的工作效率,这也正是成功的原因之一。&&&&2.7 总线周期的含义是什么?的基本总线周期由几个时钟组成?如一个CPU的时钟频率为24MHz,那么,它的一个时钟周期为多少?一个基本总线周期为多少?如主频为15MHz呢?&&&&答:1.总线周期的含义是总线接口部件完成一个取指令或传送数据的完整操作所需的最少时钟周期数。&&&&2.的基本总线周期由4个时钟周期组成。&&&&3.当主频为24MHz时,Tφ=1/24MHz≈41.7ns,T总=4Tφ≈167ns。&&&&4.当主频为15MHz时,Tφ=1/15MHz≈66.7ns,T总=4Tφ≈267ns。&&&&2.8 在总线周期的T1、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态TW?TW在哪儿插入?怎样插入?&&&&答:1.在总线周期的T1、T2、T3、T4状态,CPU分别执行下列动作:&&&&① T1状态:CPU往多路复用总线上发出地址信息,以指出要寻找的存储单元或外设端口的地址。&&&&② T2状态:CPU从总线上撤销地址,而使总线的低16位浮置成高阻状态,为传输数据做准备。总线的高4位(A19~A16)用来输出本总线周期的状态信息。&&&&③ T3状态:多路总线的高4位继续提供状态信息。低16位(8088为低8位)上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。&&&&④ T4状态:总线周期结束。&&&&2.当被写入数据或者被读取数据的外设或存储器不能及时地配合CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好的信号”,于是CPU会在T3之后插入一个或多个附加的时钟周期TW。&&&&3.TW插在T3状态之后,紧挨着T3状态。&&&&4.插入的TW状态时的总线上的信息情况和T3状态的信息情况一样。当CPU收到存储器或外设完成数据传送时发出的“准备好”信号时,会自动脱离TW状态而进入T4状态。&&&&2.9 从引腿信号上看,有什么区别?&&&&答:①8086有16根数据/地址复用总线,8088只有8根,称AD7~AD0。&&&&②8086的第28腿为M/,8088的第28腿为M/(为兼容8080等)。&&&&③8086的第34腿为/S7,8088的第34腿为。&&&&2.10 在对存储器和I/O设备读写时,要用到、、、信号,这些信号在最大模式和最小模式时分别可用怎样的电路得到?请画出示意图。&&&&答:1.最小模式(以8086为例):&&&&2.最大模式:用8288总线控制器来实现。&&&&2.11 CPU启动时,有哪些特征?如何寻找系统的启动程序?&&&&答:1.CPU启动时,有以下特征:&&&&①内部寄存器等置为初值;&&&&②禁止中断(可屏蔽中断);&&&&③从FFFF0H开始执行程序;&&&&④三态总线处于高阻状态。&&&&2.系统的启动程序从FFFF0H单元开始的无条件转移指令转入执行。&&&&2.12 CPU在8086的微机系统中,为什么常用AD0作为低8位数据的选通信号?&&&&答:因为每当CPU和偶地址单元或偶地址端口交换数据时,在T1状态,AD0引腿传送的地址信号必定为低电平。而CPU的传输特性决定了只要是和偶地址单元或偶地址端口交换数据,则CPU必定通过总线低8位即AD7~AD0传输数据。可见AD0可以用来作为接于数据总线低8位上的8位外设接口芯片的选通信号。&&&&2.13 在最大模式或最小模式时,引腿信号分别有什么不同?&&&&答:在此两种模式中,只有第24~31腿的信号不同。&&&&引腿号 24 25 26 27 28 29 30 31&&&&最小模式信号 &&&&ALE &&&&DT/&&&&M/&&&&&&&&HLDA HOLD&&&&最大模式信号 QS1 QS0 &&&&&&&&&&&&&&&&/&&&&/另外8088的第34腿在最大模式时为高电平,最小模式时为SS0状态信号。8088的第28腿在最小模式时为M/信号。&&&&2.14 是怎样解决地址线和数据线的复用问题的?ALE信号何时处于有效电平?&&&&答:1.在总线周期的T1状态,复用总线用来输出要访问的存储器或I/O端口的地址给地址锁存器8282(3片)锁存;在其他状态为传送数据或作传送准备。地址锁存器8282在收到CPU发出的地址锁存允许信号ALE后,锁存地址。&&&&2.ALE信号在每个总线周期的T1状态为有效高电平。&&&&2.15 (数据总线允许信号)信号和A0信号是通过怎样的组合解决存储器和外设端口的读/写的?这种组合决定了8086系统中存储器偶地址体及奇地址体之间应该用什么信号来区分?怎样区分?&&&&答:1.组合情况如下:&&&&&&&&A0 操作 所用的数据引腿&&&&0 0 从偶地址开始读/写一个字 AD15~AD0&&&&1 0 从偶地址单元或端口读/写一个字节 AD7~AD0&&&&1 1 从奇地址单元或端口读/写一个字节 AD15~AD8&&&&0 1 从奇地址开始读/写一个字(在第一个总线周期,将低8位数送AD15~AD8,在第二个总线周期,将高8位数送AD7~AD0) AD15~AD8&&&&AD7~AD0&&&&1 0
&&&&2.用A0信号来区分偶地址体和奇地址体。&&&&3.当A0=0时选中偶地址体,A0=1时选中奇地址体。&&&&2.16 RESET信号来到后,CPU的状态有哪些特点?&&&&答:复位信号来到后,CPU便结束当前操作,并对处理器标志寄存器FR、IP、DS、SS、ES、其他寄存器及指令队列清0,而将CS设置为FFFFH。当复位信号变为低电平后,CPU从FFFF0H单元开始执行程序。&&&&2.17 在中断响应过程中,A发的两个信号分别起什么作用?&&&&答:第一个负脉冲通知外部设备的接口,它发出的中断请求已经得到允许;外设接口收到第二个负脉冲后,往数据总线上放中断类型码,从而CPU得到了有关此中断请求的详尽信息。&&&&2.18 总线保持过程是怎样产生和结束的?画出时序图。&&&&答:1.当系统中CPU之外的另一个主模块要求占用总线时,通过HOLD引腿向CPU发一个高电平的请求信号。如果CPU此时允许让出总线,就在当前总线周期完成时,于T4状态从HLDA引腿发出一个应答信号,对刚才的HOLD请求做出响应。同时,CPU使地址/数据总线和控制状态线处于浮空状态。总线请求部件收到HLDA信号后,就获得了总线控制权,在此后一段时间,HOLD(总线保持请求信号)和HLDA(总线保持响应信号)都保持高电平。在总线占有部件用完总线之后,会把HOLD信号变为低电平,表示现在放弃对总线的占有。收到低电平的HOLD信号后,也将HLDA变为低电平,这样,CPU又获得了地址/数据总线和控制状态线的占有权。&&&&2.时序图为:&&&&2.19 8086系统在最小模式时应该怎样配置?请画出这种配置并标出主要信号的连接关系。&&&&答:1.8086系统在最小模式时的配置是:8086CPU一片,8284A时钟发生器一片,8282地址锁存器三片,8286总线收发器二片。&&&&2.连接关系为:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2.20 时钟发生器的功能是什么?画出它的线路图。&&&&答:1.时钟发生器的功能是:提供频率恒定占空比符合标准的时钟信号,对准备好(READY)和复位(RESET)信号进行同步。&&&&2.线路图见书21页图2.7所示。&&&&2.21 8086在最大模式下应当怎样配置?最大模式时为什么一定要用总线控制器?总线控制器的输入信号是什么?输出信号是什么?&&&&答:1.8086在最大模式下的配置是:8086CPU一片,8284A时钟发生器一片,8282地址锁存器三片,8286总线收发器二片,8288总线控制器一片,8259A中断优先级管理部件一片。&&&&2.因为在最大模式下,需要用外加电路来对CPU发出的控制信号进行变换和组合,以得到对存储器和I/O端口的读/写信号和对锁存器8282及总线收发器8286的控制信号。8288总线控制器就是完成上述这些功能的专用芯片。所以必须用总线控制器。&&&&3.总线控制器的输入信号是:来自CPU的、、状态信息,时钟CLK信号,及决定本身工作方式的信号IOB、、CEN。&&&&4.总线控制器的输出信号是:用来作为CPU进行中断响应的信号,两组读/写控制信号、、、,两个提前的写控制信号、,送给地址锁存器的信号ALE,送给数据收发器的信号DEN和DT/。&&&&2.22 在编写程序时,为什么通常总要用开放中断指令来设置中断允许标志?&&&&答:因为在复位时,标志寄存器FR被清0,则IF=0,禁止从INTR进入的可屏蔽中断,所以必须在编写程序时,用指令来设置中断允许标志。&&&&2.23 T1状态下,数据/地址复用总线上是什么信息?用哪个信号将此信息锁存起来?数据信息是在什么时候给出的?用时序图表示出来。&&&&答:1.T1状态下,数据/地址复用总线上是地址信息。&&&&2.用ALE信号的下降沿将此地址信息锁存在三片8282中。&&&&3.数据信息的给出时间分两种:&&&&①总线读周期时,数据信息在T3、TW、T4中间给出;&&&&②总线写周期时,数据信息在T2、T3、TW、T4中间给出。&&&&4.时序图如下:&&&&T1T2T3TWT4&&&&&&&&&&&&地址状态输出&&&&&&&&地址数据输出&&&&&&&&&&&&地址数据输入&&&&&&&&&&&&&&&&&&&&BHE输出&&&&2.24 画出8086最小模式时的读周期时序。&&&&答:见书27页图2.11所示。&&&&2.25 8086最多可有多少个中断?按照产生中断的方法分为哪两大类?&&&&答:1.8086最多可有256个中断。&&&&2.按照产生中断的方法分为硬件中断和软件中断两大类。&&&&2.26 非屏蔽中断有什么特点?可屏蔽中断有什么特点?分别用在什么场合?&&&&答:1.非屏蔽中断的特点有:中断请求从NMI引腿进入,不受中断允许标志IF的影响。非屏蔽中断只有一个,其中断类型码为2。&&&&2.可屏蔽中断的特点有:中断请求从INTR引腿进入,只有在IF=1时CPU才响应该中断。可屏蔽中断有若干个,其中断类型码可以是5~255。&&&&3.非屏蔽中断用来处理系统的重大故障,如掉电等。可屏蔽中断用在一般外部设备申请的中断中。&&&&2.27 什么叫中断向量?它放在那里?对应于1CH的中断向量存放在哪里?如果1CH的中断处理子程序从H开始,则中断向量应怎样存放?&&&&答:1.中断处理子程序的入口地址就是中断向量。&&&&2.中断向量放在0段的0~3FFH区域的中断向量表中。&&&&3.对应于类型号为1CH的中断向量应放在H的4个单元中。&&&&4.若1CH的中断向量为H,则中断向量的存放方法为:00070H存放30H,00071H存放20H(IP);00072H存放10H,00073H存放51H(CS)。&&&&2.28 从的中断向量表中可以看到,如果一个用户想定义某个中断,应该选择在什么范围?&&&&答:应该选择在中断类型码为32(20H)~255(FFH)范围。&&&&2.29 非屏蔽中断处理程序的入口地址怎样寻找?&&&&答:CPU在响应NMI引腿的中断请求时,CPU并不需要从中断类型码计算中断向量的地址,而是直接从中断向量表中读取BH这4个单元对应于中断类型2的中断向量就行了。CPU将00008H、00009H两个单元的内容装入IP,而将0000AH、0000BH两个单元的内容装入CS,于是就转入了对非屏蔽中断处理程序的执行。&&&&2.30 叙述可屏蔽中断的响应过程,一个可屏蔽中断或者非屏蔽中断响应后,堆栈顶部四个单元中为什么内容?&&&&答:首先在CPU的INTR引腿上有可屏蔽中断请求输入,且IF=1。在当前指令执行完后,CPU发两个中断响应负脉冲,外设接到第二个负脉冲后,立即往数据线上给CPU送来中断类型码。然后CPU取中断类型码,将标志FR推入堆栈,清除IF和TF,再将CS和IP推入堆栈来保护断点,进入中断处理子程序并执行,最后弹出IP和CS及标志而中断返回。中断响应后,堆栈顶部四个单元的内容分别是:IPL、IPH、CSL、CSH。&&&&2.31 一个可屏蔽中断请求来到时,通常只要中断允许标志为1,便可在执行完当前指令后响应,在哪些情况下有例外?&&&&答:1.正好遇到CPU执行封锁指令时,必须等下一条指令执行完后才响应中断。&&&&2.正好执行往段寄存器传送数据的指令,必须等下一条指令执行完后才响应中断。&&&&3.执行WAIT或串操作指令时,可在指令执行中响应中断。&&&&2.32 在对堆栈指针进行修改时,要特别注意什么问题?为什么?&&&&答:1.必须先修改堆栈段寄存器SS的值,接着修改堆栈指针SP的值。&&&&2.因为,CPU在修改段寄存器值时不响应中断,待下一条指令执行后才响应中断。这样对SS、SP的修改是一个完整的过程。否则先修改SP后修改SS则可能中断响应而分开修改,导致堆栈指针的错误,因此CS、IP、FR进入错误的堆栈区域而破坏该单元的数据或程序。&&&&2.33 在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?有些寄存器即使在中断处理子程序中并没有用到也需要保护,这又是为什么(联系串操作指令执行时遇到中断这种情况来回答)?&&&&答:1.因为中断处理子程序运行时需要使用CPU内部的寄存器,这些寄存器的值发生了改变。因此若不加保护在返回原程序时就修改了断点处的现场,而使程序不能正常运行。&&&&2.因为串操作指令允许在执行过程中进入中断,若与串操作有关的寄存器未保护好,中断返回时串操作指令就不能正常继续运行。而且还有隐含寻址问题。&&&&2.34 一个可屏蔽中断响应时,CPU要执行哪些读/写周期?对一个软件中断又如何?&&&&答:1.对可屏蔽中断响应,CPU要执行的读/写周期如下:&&&&①执行两个中断响应总线周期。并取得中断类型码。&&&&②执行一个总线写周期。标志寄存器FR值入栈。&&&&③执行一个总线写周期。CS值入栈。&&&&④执行一个总线写周期。IP值入栈。&&&&⑤执行一个总线读周期。读取中断处理子程序入口地址的偏移量→IP。&&&&⑥执行一个总线读周期。读取中断处理子程序入口地址的段地址→CS。&&&&2.若是一个软件中断,则跳过上述第①步,而执行②~⑥步。&&&&2.35 中断处理子程序在结构上一般是怎样一种模式?&&&&答:①保护中断时的现场,即保护CPU各寄存器的值。&&&&②一般应置IF=1来开放中断,以允许级别较高的中断请求进入。&&&&③中断处理的具体内容。&&&&④恢复中断时的现场。&&&&⑤中断返回指令。&&&&2.36 软件中断有哪些特点?在中断处理子程序和主程序的关系上,软件中断和硬件中断有什么不同之处?&&&&答:1.软件中断有如下特点:&&&&①用一条中断指令进入中断处理子程序,并且,中断类型码由指令提供。&&&&②进入中断时,不需要执行中断响应总线周期。&&&&③不受中断允许标志IF的影响。&&&&④软件中断的优先级最高。&&&&⑤软件中断没有随机性。&&&&2.软件中断允许在主程序和中断处理子程序之间传递数据。而硬件中断由于是随机的,所以不能传递数据。&&&&2.37 系统中有多个总线模块时,在最大模式和最小模式下分别用什么方式来传递总线控制权?&&&&答:1.在最小模式下用总线控制联络信号(HOLD和HLDA)来传递总线控制权。&&&&2.在最大模式下用总线请求/总线允许信号及释放信号/和/来传递总线控制权。&&&&2.38 8086存储空间最大为多少?怎样用16位寄存器实现对20位地址的寻址?&&&&答:1.8086存储空间最大为220=1MB。&&&&2.采用分段的方法实现16位寄存器实现对20位地址的寻址。&&&&物理地址=段基址×10H+偏移地址&&&&2.39 IBMPC/XT系统中,哪个区域为显示缓冲区?哪个区域用来存放中断向量?在FFFF0H到FFFFFH单元中存放什么内容?&&&&答:1.B0000H~B0F9FH约4KB为单色显示器的显示缓冲区;B8000~BBF3FH约16KB为彩色显示器的显示缓冲区。&&&&2.0FFH共1KB区域用来存放中断向量。&&&&3.在FFFF0H到FFFFFH单元中存放一条无条件转移指令,转到系统的初始化程序。&&&&&&&&&&&&&&&&&&&&第五章微型计算机和外设的数据传输&&&&5.1 外部设备为什么要通过接口电路和主机系统相连?存储器需要接口电路和总线相连吗?为什么?&&&&答:1.因为外设的功能多种多样,对于模拟量信息的外设必须要进行A/D和D/A转换,而对于串行信息的外设则必须转换为并行的信息,对于并行信息的外设还要选通。而且外设的速度比CPU慢的多,必须增加缓冲功能。只有这样计算机才能使用这些外设。而所有这些信息转换和缓冲功能均由接口电路才能完成。&&&&2.存储器不需要接口电路和总线相连。&&&&3.因为存储器功能单一,且速度与CPU相当。因此可直接挂在CPU总线上。&&&&5.2 是不是只有串行数据形式的外设需要接口电路和主机系统连接?为什么?&&&&答:1.不是。并行数据形式的外设也需要接口电路和主机系统连接。&&&&2.因为,CPU每次只能访问一个外设,因此并行信息的外设需增加选通功能,才能满足CPU的访问要求,必须用接口电路。&&&&5.3 接口电路的作用是什么?按功能可分为几类?&&&&答:1.接口电路的作用就是在外设和CPU之间起信息变换和缓冲功能。&&&&2.按功能可分为两类:&&&&① 一种是使微处理器正常工作所需要的辅助电路。&&&&② 另一种是输入/输出接口电路。&&&&5.4 数据信息有哪几类?举例说明它们各自的含义。&&&&答:1.数据信息有四类:数字量、模拟量、开关量、脉冲量。&&&&2.如键盘、磁带机等就是数字量信息;温度、湿度、压力等转换的电信号就是模拟量;电机的起停、发光设备的亮灭等都是开关量;计数脉冲、定时脉冲等都是脉冲量。&&&&5.5 CPU和输入/输出设备之间传送的信息有哪几类?&&&&答:有数据信息、控制信息、状态信息三类。&&&&5.6 什么叫端口?通常有哪几类端口?计算机对I/O端口编址时通常采用哪两种方法?在系统中,用哪种方法对I/O端口进行编址?&&&&答:1.CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口。&&&&2.有数据端口、控制端口、状态端口三类。&&&&3.在微型计算机中通常用两种I/O端口编址方式:存储器映象寻址和I/O端口单独寻址。&&&&4.在系统中,用I/O端口单独寻址方式编址。&&&&5.7 为什么有时候可以使两个端口对应一个地址?&&&&答:因为这两个端口一个是只读端口,一个是只写端口。而CPU对一个I/O端口地址可进行读/写两种访问。如果将这两个只读和只写端口编为一个地址,则CPU对该端口地址读操作对应的是只读端口;CPU对该端口地址写操作则对应的是只写端口,互不影响。因此可以使两个单向的只读和只写端口对应一个端口地址。&&&&5.8 CPU和外设之间的数据传送方式有哪几种?实际选择某种传输方式时,主要依据是什么?&&&&答:1.CPU和外设之间的数据传送方式有三种:程序方式、中断方式、DMA方式。&&&&2.主要依据是外设的情况(外设的速度和外设提供信息的方式)。&&&&5.9 无条件传送方式用在哪些场合?画出无条件传送方式的工作原理图并说明。&&&&答:1.无条件传送方式只用在对一些简单外设进行操作的场合。如开关、LED显示等。&&&&2.无条件传送方式的工作原理图:(见书203页图5.2所示)&&&&① 在无条件输入时:CPU执行一条输入指令,使和M/信号为有效低电平,并对应送出该端口地址,因此选中输入缓冲器,打开其三态门,使输入缓冲器的数据经数据总线送到CPU的累加器中。&&&&② 在无条件输出时:CPU执行一条输出指令,使和M/信号为有效低电平,并对应送出该端口地址,因此选中输出锁存器,将由累加器送到数据总线上的数据打入输出锁存器中供外设使用。&&&&5.10 条件传送方式的工作原理是怎样的?主要用在什么场合?画出条件传送(查询)方式输出过程的流程图。&&&&答:1.条件传送方式的工作原理是:外设给CPU提供一个状态信息,当CPU要访问外设时,必须先检测该状态信息是否合乎要求,不停检测直至合乎要求时才进行CPU对外设的访问。&&&&2.查询方式主要用在外设较少,数据交换不频繁的非实时系统的场合。&&&&3.查询式输出过程的流程图如右:&&&&5.11 设一个接口的输入端口地址为0100H,而它的状态端口地址为0104H,状态口中第5位为1表示输入缓冲区中有一个字节准备好,可输入。设计具体程序实现查询式输入。&&&&答:DATA
SEGMENT&&&&BUFFER DB
;接收数据缓冲区&&&&DATA
ENDS&&&&CODE
SEGMENT&&&&ASSUME DS:DATA,CS:CODE&&&&STAT:
MOV AX,DATA
;对DS初始化&&&&MOV DS,AX&&&&MOV DI,OFFSETBUFFER&&&&MOV DX,0104H&&&&STATIN: IN
AL,DX&&&&TEST AL,20H
;测试第5位&&&&JZ
;第5位为0继续测试&&&&MOV DX,0100H&&&&IN
;输入数据&&&&MOV [DI],AL&&&&CODE
ENDS&&&&END
STAT&&&&5.12 查询式传送方式有什么缺点?中断方式为什么能弥补查询方式的缺点?&&&&答:1.查询式传送方式缺点是:花费CPU的时间作等待循环,大大降低了CPU的运行效率。&&&&2.中断方式是在外设准备就绪时向CPU申请中断,再进行传送,因而CPU无需花费时间作等待循环,弥补了查询方式的缺点。&&&&5.13 画一个用中断方式进行输出传输的接口电路。&&&&答:中断方式输出的接口电路如下:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&5.14 叙述可屏蔽中断的响应和执行过程。&&&&答:①接口发中断请求信号。&&&&②CPU的IF=1时,当前指令执行完后,CPU进行中断回答,发两个负脉冲。&&&&③接口将中断类型号n送CPU。&&&&④当前的PSW、CS和IP推入堆栈,并清除IF和TF。&&&&⑤(4×n)作为IP,(4×n+2)作为CS,即取中断向量。&&&&⑥执行中断子程序,并开中断。&&&&⑦中断返回IRET指令使IP、CS和PSW弹出堆栈。&&&&⑧返回被中断的程序。&&&&5.15 通常解决中断优先级的方法有哪几种?各有什么优缺点?&&&&答:1.有软件查询方式、简单硬件方式——菊花链法、专用硬件方式三种。&&&&2.软件查询方式的优点是节省硬件,缺点是中断响应时间长;简单硬件方式的优点是中断响应时间短,硬件较简单,缺点是优先级固定,变动起来很麻烦;专用硬件方式优点是对优先级可编程修改,中断管理非常方便,缺点是硬件复杂的多,好在有专用的中断控制器。&&&&5.16 和DMA比较,中断传输方式有什么不足之处?&&&&答:CPU执行一次传送要花费许多与传送操作无关的指令执行等时间,另外中断传送方式不能进行数据块传送,而是按字节或字传送。&&&&5.17 叙述用DMA方式传送单个数据的全过程。&&&&答:①接口准备就绪,发DMA请求信号给DMA控制器。&&&&②DMA控制器向CPU转发总线请求信号HOLD。&&&&③CPU向DMA控制器发总线请求允许信号HLDA,DMA控制器得到总线控制权。&&&&④DMA控制器把地址送地址总线。&&&&⑤DMA控制器向接口发DMA请求确认信号。&&&&⑥内存和接口通过数据总线传送数据。.&&&&⑦DMA控制器撤销总线请求信号HOLD。&&&&⑧8086CPU收回总线控制权。&&&&5.18 DMA控制器的地址线为什么是双向的?什么时候往DMA控制器传输地址?什么时候DMA控制器往地址总线传输地址?&&&&答:1.因为DMA控制器要接受CPU的控制,接收CPU发来的初始化等信息,这要求地址线来寻址各端口,地址线为输入线。又因为DMA控制器可控制总线,这要求地址线为输出。所以地址线必须为双向才行。&&&&2.CPU要对DMA控制器发初始化信息时,必须往DMA控制器传输地址。&&&&3.DMA控制器得到总线控制权后,向地址总线传输地址。&&&&5.19 在设计DMA传输程序时,要有哪些必要的模块?设计一个启动数据块输出的程序段。&&&&答:1.要有DMA的初始化模块:对字节计数器、地址寄存器和控制寄存器置初值。还要有对接口部件设置控制字的模块:指出数据传输方向,并启动I/O操作。&&&&2.启动数据块输出的程序段如下:&&&&IDLO: IN
AL,INTSTAT
;接口状态寄存器的状态位(2)是否忙&&&&TEST AL,04&&&&JNZ
;忙,则等待&&&&MOV AX,COUNT
;不忙,则设置计数初值&&&&OUT
BYTE_REG,AX
;对字节计数器BYTE_REG初始化&&&&LEA
AX,BUFFER
;设置地址初值&&&&OUT
ADD_REG,AX
;对DMA地址寄存器ADD_REG初始化&&&&MOV AL,DMAC
;取原DMA控制字&&&&OR
;设置方向为输出&&&&OUT
DMACON,AL
;置DMA控制字&&&&MOV AL,INTC
;取原接口控制字&&&&OR
;设置传输方向为输出及允许&&&&OUT
INTCON,AL
;置接口控制字&&&&┆&&&&后续处理&&&&5.20 在查询方式、中断方式和DMA方式中,分别用什么方法启动数据传输过程?&&&&答:①查询方式:通过程序来检测接口中状态寄存器中的“准备好”位,以确定当前是否可以进行数据传输。&&&&②中断方式:当接口中已经有数据要往CPU输入或者准备好接收数据时,接口会向CPU发一个外部中断请求。CPU响应中断后,便通过运行中断处理程序来实现输入/输出。&&&&③DMA方式:外设要求传送数据时,接口会向DMA控制器发DMA请求信号,DMA控制器转而向CPU发一个总线请求信号,以请求得到总线控制权,如果得到CPU允许,那么,就可在没有CPU参与的情况下,实现DMA传输。&&&&&&&&第六章串并行通信和接口技术&&&&6.1 接口部件为什么需要有寻址功能?设计一个用74LS138构成的译码电路,输入为A3、A4、A5、A8,输出8个信号以对8个接口部件进行选择。想一想如果要进一步对接口中的寄存器进行寻址,应该怎样实现?&&&&答:1.因为,首先接口要对选择M和I/O的信号能够做出解释;此外,要对送来的片选信号进行识别,以便判断当前本接口是否被访问,如果受到访问,还要决定是接口中那个寄存器受到访问。&&&&2.将A1接在接口的A0上,A2接在接口的A1上;将接口的接在74LS138的某一输出端,和分别接在对应的控制总线上。从而可实现接口中的共8个只读和只写寄存器的寻址。(由于用的是8086CPU,所以A0空。)&&&&6.2 接口部件的输入/输出操作具体对应哪些功能,举例说明。&&&&答:1.具体对应的功能为:寻址功能、输入/输出功能、数据转换功能、联络功能和错误检测功能等。&&&&2.例如串行输入操作:首先要将串行输入的数据转换为并行输入的数据放入输入缓冲器,然后发一个准备好信号通知CPU来读取该输入寄存器的内容。从而完成一个串行数据的输入过程。其中在数据转换时自动检测传输的错误。&&&&6.3 从广义上说接口部件有哪些功能?&&&&答:寻址功能、输入/输出功能、数据转换功能、联络功能、中断管理功能、复位功能、可编程功能和错误检测功能。&&&&6.4 怎样进行奇/偶校验?如果用偶校验,现在所传输的数据中1的个数为奇数,那么,校验位应为多少?&&&&答:1.用奇/偶校验位对传输错误进行检测。传输时,如果用奇校验,那么使信息中1的数目(包括校验位)为奇数。即所传输的数据中1的个数为奇数,则使校验位为0;若所传输的数据中1的个数为偶数,则使校验位为1。这样奇校验时,在传输一个数据时,1的总数目总是为奇数。同样若用偶校验,信息中1的数目(包括校验位)为偶数。&&&&2.偶校验时,所传输的数据中1的个数为奇数,则校验位应为1。&&&&6.5 什么叫覆盖错误?接口部件如何反映覆盖错误?&&&&答:1.接口的数据缓冲寄存器中的数据还未被取走,由于某种原因又被装上了新的数据,就会产生一个覆盖错误。&&&&2.在产生覆盖错误时,接口会在状态寄存器中设置相应的状态位来反映。&&&&6.6 接口部件和总线之间一般有哪些部件?它们分别完成什么功能?&&&&答:1.外部逻辑电路和地址译码器。&&&&2.外部逻辑电路把CPU送来的一些控制信号翻译成联络信号。地址译码器将总线提供的I/O地址翻译成对接口的片选信号。&&&&6.7 为什么串行接口部件中的4个寄存器可以只用1位地址线来进行区分?&&&&答:一位地址线可编址二个地址,再加上读和写信号可对2个只读寄存器和2个只写寄存器进行端口寻址。而串行接口部件的控制寄存器和数据输出寄存器是只写的,状态寄存器和数据输入寄存器是只读的,所以可用一位地址线来区分。&&&&6.8 在数据通信系统中,什么情况下可以采用全双工方式,什么情况下可用半双工方式?&&&&答:对于近距离较大信息量的传输应采用全双工方式。而对于远距离或较少信息量的传输或单向的输入或输出设备时应采用半双工方式。&&&&6.9 什么叫同步通信方式?什么叫异步通信方式?它们各有什么优缺点?&&&&答:1.在同一时钟控制下需用同步字符同步的信息按组传送的方式叫同步通信方式。&&&&2.在两个相近频率的时钟分别控制下只需一个起始位的信息按字符传送的方式叫异步通信方式。&&&&3.在传输率相同时同步方式的信息有效率要比异步方式下的高。但同步方式必须传送时钟信号,异步方式只要两端的时钟频率相近即可。&&&&6.10 什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,时钟频率为多少?&&&&答:1.波特率因子:时钟频率和位传输率的比值。此比值必须为16、32或64。&&&&2.波特率:位传输率即为波特率。&&&&3.时钟频率=波特率因子×波特率=64×Hz。&&&&6.11 标准波特率系列指什么?&&&&答:国际上规定的波特率标准值为:110、300、600、、、、、3、115200。&&&&6.12 设异步传输时,每个字符对应1个起始位、7个信息位、1个奇/偶校验位和1个停止位,如果波特率为9600,则每秒钟能传输的最大字符数为多少?&&&&答:每个字符所占的总位数为:1+7+1+1=10位。所以每秒钟能传输的最大字符数为个字符。&&&&6.13 在RS–232–C标准中,信号电平与TTL电平不兼容,问RS–232–C标准的1和0分别对应什么电平?RS–232–C的电平和TTL电平之间用什么器件进行转换?&&&&答:1.RS–232–C的1对应–3V~–25V;RS–232–C的0对应+3V~+25V电平。&&&&2.RS–232–C电平→TTL电平用MC1489转换;TTL电平→RS–232–C电平用MC1488转换。&&&&6.14 从8251A的编程结构中,可以看到8251A有几个寄存器与外部电路有关?一共要几个端口地址?为什么?&&&&答:1.有7个寄存器与外部电路有关。&&&&2.要2个端口地址。&&&&3.因为,一个数据输入缓冲寄存器为只写,一个数据输出缓冲寄存器为只读,可共用一个端口地址,在读/写信号配合下进行读/写操作。一个模式寄存器、2个同步字符寄存器和1个控制寄存器都是只写的,但它们有初始化约定,可用一个端口写入,1个状态寄存器为只读,因此与上面共用的一个写入端口合用一个读/写端口地址进行寻址。因此只要2个端口地址即可。&&&&6.15 8251A内部有哪些功能模块?其中读/写控制逻辑电路的主要功能是什么?&&&&答:1.8251A内部有7个功能模块组成。为:接收缓冲器、接收控制电路、发送缓冲器、发送控制电路、数据总线缓冲器、读/写控制逻辑电路、调制/解调控制电路。&&&&2.读/写控制逻辑电路的主要功能是:用来配合数据总线缓冲器工作。&&&&① 接收写信号,并将来自数据总线的数据和控制字写入8251A;&&&&② 接收读信号,并将数据或状态字从8251A送往数据总线;&&&&③ 接收控制/数据信号C/,将此信号和读/写信号合起来通知8251A,当前读/写的是数据还是控制字、状态字;&&&&④ 接收时钟信号CLK,完成8251A的内部定时;&&&&⑤ 接收复位信号RESET,使8251A处于空闲状态。&&&&6.16 什么叫异步工作方式?画出异步工作方式时8251A的TxD和RxD线上的数据格式。&&&&答:1.在两个相近频率的时钟分别控制下,只需一个起始位的信息按字符传送的方式叫异步工作方式。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2.异步工作方式时8251A的TxD和RxD线上的数据格式为:&&&&6.17 什么叫同步工作方式?什么叫双同步字符方式?外同步和内同步有什么区别?画出双同步工作方式时8251A的TxD线和RxD线上的数据格式。&&&&答:1.在同一时钟控制下需用同步字符同步的信息按组传送的方式叫同步工作方式。&&&&2.需用2个同步字符的同步工作方式叫双同步字符方式。&&&&3.外同步只能工作于同步接收方式,而内同步即适用于同步接收,也适用于同步发送。外同步是由外设来搜索同步字符,一旦搜索成功,立即给串行接口的同步输入端送来一个高电平,表示同步已实现,串行接收端开始接收数据。而内同步由串行接口本身来搜索同步字符而实现同步的。&&&&4.双同步工作时8251A的TxD和RxD线上的数据格式为:&&&&6.18 8251A和CPU之间有哪些连接信号?其中C/和、如何结合起来完成对命令、数据的写入和状态、数据的读出?&&&&答:1.8251A和CPU之间的连接信号有:片选信号—,数据信号—D7~D0,读/写控制信号—、、C/,收发联络信号—TxRDY、TxE、RxRDY、SYNDET。&&&&2.C/=0、=0、=1时CPU从8251A输入数据;&&&&C/=0、=1、=0时CPU往8251A输出数据;&&&&C/=1、=0、=1时CPU读取8251A的状态;&&&&C/=1、=1、=0时CPU往8251A写入控制命令。&&&&6.19 系统中,8251A的C/端应当和哪个信号相连,以便实现状态端口、数据端口、控制端口的读/写?&&&&答:8251A的C/端应与地址总线的A1相连。&&&&6.20 8251A与外设之间有哪些连接信号?&&&&答:收发联络信号—、、、,数据信号—TxD、RxD。&&&&6.21 为什么8251A要提供、、、四个信号作为和外设的联络信号?平常使用时是否可以只用其中两个或者全部不用?要特别注意什么?说明端的连接方法。&&&&答:1.8251A的这四个信号是提供给CPU和外设进行联络用的,因为CPU不能和外设直接相连。这样CPU对外设的控制信号和及外设给CPU的状态信号和必须由接口(此处为8251A)来传递。所以要提供此4个信号作为和外设的联络信号。&&&&2.平常使用时可以只用其中两个或者全部不用。&&&&3.要特别注意的是在某个时候要输入一个低电平。否则CPU不能往8251A发送数据。&&&&4.一般接地,以确保不用它作联络信号时也维持低电平输入。&&&&6.22 8086系统中采取什么措施来实现8位接口芯片和低8位数据线的连接且满足对奇/偶端口的读/写?这样做的道理是什么?&&&&答:1.将系统总线的A1与接口的A0相连接即可。软件上采用连续的偶地址代替端口的奇/偶地址。&&&&2.因为这样连接,从CPU这边来说,端口地址都是偶地址,传输信息时,信息总是出现在CPU的低8位数据总线上;而从端口这边来说,端口地址中既有奇地址也有偶地址,且是连续的,这又满足了许多8位接口芯片对端口地址的要求。&&&&6.23 对8251A进行编程时,必须遵守哪些约定?&&&&答:①芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。&&&&②若模式字中规定了8251A工作在同步模式,则CPU接着往奇地址端口输出的1个或2个字节就是同步字符被写入同步字符寄存器。若有两个同步字符,则会按先后分别写入第一个同步字符寄存器和第二个同步字符寄存器。&&&&③此后,只要不是复位命令,不管是在同步模式还是在异步模式下,由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。&&&&6.24 8251A的模式字格式如何?参照教材上给定格式编写如下模式字:异步方式,1个停止位,偶校验,7个数据位,波特率因子为16。&&&&答:1.8251A的模式字格式为:(含义见书240页图6.11所示)&&&&S2 S1 EP PEN L2 L1 B2 B1
SCS ESD EP PEN L2 L1 0 0&&&&异步模式字同步模式字&&&&2.因是异步方式,波特率因子为16:B2B1=10;1个停止位:S2S1=01;偶校验:EP=1,PEN=1;7个数据位:L2L1=10。所以模式字为AH。&&&&6.25 8251A的控制字格式如何?参照教材上列出的格式给出如下控制字:发送允许,接收允许,端输出低电平,TxD端发送空白字符,端输出低电平,内部不复位,出错标志复位。&&&&答:1.8251A的控制字格式为:(含义见书241页图6.12所示)&&&&EH IR RTS ER SBRK RxE DTR TxEN&&&&2.发送允许:TxEN=1,接收允许:RxE=1,端输出低电平:DTR=1,TxD端发送空白字符SBRK=1;端输出低电平:RTS=1,内部不复位:IR=0,出错标志复位ER=1。EH=0/1则控制字为B或FH或0BFH。&&&&6.26 8251A的状态字格式如何?哪几位和引腿信号有关?状态位TxRDY和引腿信号TxRDY有什么区别?它们在系统设计中有什么用处?&&&&答:1.8251A的状态字格式为:(含义见书242页图6.13所示)&&&&DSR SYNDET FE OE PE TxE RxRDY TxRDY&&&&2.DSR、SYNDET、TxE、RxRDY四个状态位与其对应的引腿信号有关。&&&&3.状态位TxRDY只要数据输出缓冲器为空就置1。而引腿TxRDY为1的条件是:数据输出缓冲器为空、为有效低电平、TxEN为1才可以,缺一不行。&&&&4.能让CPU随时了解当前8251A的工作状态,而执行相应的操作。对查询方式的设计非常方便。&&&&6.27 参考初始化流程,用程序对8251A进行同步模式设置。奇地址端口的地址为66H,规定用内同步方式,同步字符为2个,用奇校验,7个数据位。&&&&答:模式字为:H。两个同步字符取16H,控制字为97H,它使8251A对同步字符进行检索;同时使状态寄存器中的3个出错标志复位;使8251A的发送器启动,接收器也启动;CPU当前已准备好进行数据传输。具体程序段如下:&&&&MOV AL,18H
;设置模式字&&&&OUT
66H,AL&&&&MOV AL,16H
;发送两个同步字符&&&&OUT
66H,AL&&&&OUT
66H,AL&&&&MOV AL,97H
;设置控制字&&&&OUT
66H,AL&&&&6.28 设计一个采用异步通信方式输出字符的程序段,规定波特率因子为64,7个数据位,1个停止位,用偶校验,端口地址为40H、42H,缓冲区首址为H。&&&&答:模式字为:BH。控制字为:H。&&&&MOV AL,0
;为发复位命令作准备&&&&OUT
42H,AL&&&&OUT
42H,AL&&&&OUT
42H,AL&&&&MOV AL,40H
;发复位命令&&&&OUT
42H,AL&&&&MOV AL,7BH
;设置模式字,异步方式,规定波特率因子为64&&&&;7个数据位,1个停止位,偶校验&&&&OUT
42H,AL&&&&MOV AL,35H
;设置控制字,使发送器和接收器启动,并清除&&&&;出错标志&&&&OUT
42H,AL&&&&PUSH DS&&&&MOV BX,2000H
;DS:BX指向输出缓冲区首址&&&&MOV DS,BX&&&&MOV BX,3000H
;缓冲区指针初始化&&&&MOV CX,100H
;发送100H个字节&&&&BEGIN: IN
;读取状态字,测试TxRDY是否为1&&&&TEST AL,01H&&&&JZ
;为0表示外设还未取走字符&&&&MOV AL,[BX]
;从输出缓冲区取数&&&&OUT
;发送字符&&&&INC
;修改缓冲区指针&&&&LOOP BEGIN
;则再发送下一个字符&&&&POP
┆&&&&6.29 并行通信和串行通信各有什么优缺点?&&&&答:并行通信的优点是信息实际传输速度快,信息率高。缺点是需多条通信线。串行通信的优点是只用1至2条通信线,但信息传输速度较慢。&&&&6.30 在输入过程和输出过程中,并行接口分别起什么作用?&&&&答:简单说,并行接口只起着桥梁和联络的作用。具体如下:&&&&①输入过程:外设将数据送给接口,并使状态线“输出准备好”成为高电平。接口把数据接收到数据输入缓冲寄存器的同时,使“数据输入回答”线变为高电平,作为对外设的响应。外设接到此信号,便撤消数据和“数据输入准备好”信号。数据到达接口后,接口便在状态寄存器中设置“输入准备好”状态位,并发中断请求,CPU可用查询方式或中断方式来设法读取接口中的数据。CPU读取数据后,接口会自动清除状态寄存器中的“输入准备好”位,并使数据总线处于高组状态。此后又可以开始下一个输入过程。&&&&②输出过程:当外设从接口取走一个数据后,接口就会将状态寄存器中的“输出准备好”状态位置1,并发中断请求,以表示CPU当前可以通过查询方式或中断方式往接口中输出数据。当CPU输出的数据到达接口的输出缓冲器中后,接口会自动清除“输出准备好”状态位,并将数据送往外设,同时,接口往外设发送一个“驱动信号”来启动外设接收数据。外设被启动后,开始接收数据,并往接口发一个“数据输出回答”信号。接口收到此信号,便将状态寄存器中的“输出准备好”状态位重新置1,以便CPU输出下一个数据。&&&&6.31 8255A的三个端口在使用时有什么差别?&&&&答:端口A和端口B常常作为独立的输入端口或者输出端口,端口C则配合端口A和端口B工作。&&&&6.32 当数据从8255A的端口C往数据总线上读出时,8255A的几个控制信号、A1、A0、、分别是什么电平?&&&&答:=0、A1=1、A0=0、=0、=1。“0”为低电平,“1”为高电平。&&&&6.33 8255A的方式选择控制字和置1/置0控制字都是写入控制端口的,那么,它们是由什么来区分的?&&&&答:由最高位D7位来区分。D7=1时为方式选择控制字,D7=0时为端口C置1/置0控制字。&&&&6.34 8255A有哪几种工作方式?对这些工作方式有什么规定?&&&&答:1.8255A有三种工作方式:方式0、方式1、方式2。&&&&2.端口A可以工作于方式0、方式1、方式2;端口B可以工作于方式0、方式1;端口C只能工作于方式0或者配合端口A和端口B工作。&&&&6.35 对8255A设置工作方式,8255A的控制口地址为00C6H。要求端口A工作在方式1,输入;端口B工作在方式0,输出;端口C的高4位配合端口A工作;低4位为输入。&&&&答:
MOV DX,00C6H&&&&MOV AL,0B1H
;取方式选择控制字为B1H(B)或B9H&&&&OUT DX,AL&&&&6.36 设8255A的4个端口地址为00C0H,00C2H,00C4H,00C6H,要求用置1/置0方式对PC6置1,对PC4置0。&&&&答:
MOV DX,00C6H&&&&MOV AL,0DH
;对PC6置1的控制字为0DH&&&&OUT DX,AL&&&&MOV AL,08H
;对PC4置0的控制字为08H&&&&OUT DX,AL&&&&6.37 8255A在方式0时,如进行读操作,CPU和8255A分别要发什么信号?对这些信号有什么要求?据此画出8255A方式0的输入时序。&&&&答:1.CPU要发、、A2、A1四个信号,8255A要发数据信号D7~D0。&&&&2.对信号的要求如下:&&&&① CPU在发出读信号前,先发出地址信号。且在整个读出期间,地址信号保持有效。&&&&② 输入数据必须保持到读信号结束后才消失。&&&&③ 要求读脉冲的宽度至少为300ns。&&&&3.8255A方式0的输入时序见书256页图6.24所示。&&&&6.38 8255A在方式0时,如进行写操作,CPU和8255A分别要发什么信号?画出这些信号之间的时序关系。&&&&答:1.CPU要发、、A2、A1控制和地址信号及D7~D0数据信号,8255A输出数据到外设。&&&&2.8255A方式0的输出时序见书257页图6.25所示。&&&&6.39 8255A的方式0一般使用在什么场合?在方式0时,如要使用应答信号进行联络,应该怎么办?&&&&答:1.方式0一般使用在同步传送和查询式传送中。&&&&2.将端口A和端口B作为数据端口,把端口C的4个数位规定为输出口,用来输出一些控制信号,而把端口C的另外4位规定为输入口,用来读入外设的状态。&&&&6.40 8255A的方式1有什么特点?参考教材中的说明,用控制字设定8255A的A口工作于方式1,并作为输入口;B口工作于方式1,并作为输出口,用文字说明各个控制信号和时序关系。假定8255A的端口地址为00C0H,00C2H,00C4H,00C6H&&&&答:1.方式1有如下特点:&&&&① 端口A和端口B可分别作为两个数据口工作于方式1,并且任何一个端口可作为输入或输出口。&&&&② 若只有一个端口工作于方式1,则端口C有三位被规定配合其工作,其余共13位可工作于方式0。&&&&③ 若两个端口都工作于方式1,则端口C有6位被规定配合其工作,端口C所剩2位仍可作为输入或输出。&&&&2.控制字为B=B4H。&&&&MOV DX,00C6H&&&&MOV AL,0B4H
;取方式选择控制字为B4H(B)&&&&OUT DX,AL&&&&3.方式1输入口A口的各个控制信号和时序关系如下:&&&&① 当外设来的输入数据出现之后,接着就到,其宽度至少要求为500ns。&&&&② 过tSTB时间后,IBFA有效,它可供CPU查询,为CPU工作于查询方式提供了条件。&&&&③ 结束后,过tSIT时间,便会发出INTRA,为CPU工作于中断方式输入数据提供了条件。&&&&④ 当CPU发出的有效后,过tRIT时间,INTRA被清除。在结束之后,数据已经读到CPU的寄存器中,经过tRIB时间,IBFA变低,从而可开始下一个数据输入过程。&&&&4.方式1输出口B口的各个控制信号和时序关系如下:&&&&① 方式1的输出端口一般用于中断方式与CPU相联系。CPU响应中断后,便往8255A输出数据,并发出。的上升沿一方面清除中断请求信号INTRB,表示CPU响应了中断;另一方面,使有效,通知外设接收数据。&&&&② 在CPU发出后的tWB时间后,数据就出现在端口的输出缓冲器中。当外设接收数据后,发一个信号。一方面使无效,表示数据已经取走,当前输出缓冲区为空;另一方面,又使INTRB有效,申请中断,从而可以开始一个新的输出过程。&&&&6.41 8255A的方式2用在什么场合?说明端口A工作于方式2时各信号之间的时序关系。&&&&答:1.方式2应用于分时工作的双向外设(输入输出设备)的连接。&&&&2.端口A工作于方式2时各信号之间的时序关系如下:&&&&① 对于方式2的输出过程:CPU响应中断,并往8255A输出一个数据,并使有效。一方面清除INTRA信号,另一方面使有效。外设收到后,发出信号,使8255A的输出锁存器打开,从而数据便出现在8255A与外设之间的数据连线上。信号也使信号无效,从而可开始下一个数据传输过程(输入或输出)。&&&&② 对于方式2的输入过程:当外设往8255A送来数据时,也一起来到,使数据锁存到8255A的输入锁存器中,从而使IBFA有效。在结束时,便发出INTRA请求。在CPU响应中断进行读操作时,会使有效将数据从8255A读到CPU中,于是IBFA又变为无效,INTRA也被清除。&&&&&&&&第1章 中断控制器、DMA控制器和计数器/定时器&&&&7.1 8259A的初始化命令字和操作命令字有什么差别?它们分别对应于编程结构中哪些内部寄存器?&&&&答:1.8259A的初始化命令字是计算机系统启动时,由初始化程序设置的。初始化命令字一旦设定,一般在系统工作过程中就不再改变。操作命令字则是由应用程序设定的,它们用来对中断处理过程作动态控制,在一个系统运行过程中,操作命令字可以多次设置。&&&&2.初始化命令字对应于编程结构的ICW1、ICW2、ICW3、ICW4共4个寄存器。操作命令字对应于编程结构的OCW1、OCW2、OCW3共3个寄存器。&&&&7.2 8259A的中断屏蔽寄存器IMR和CPU的中断允许标志IF有什么差别?在中断响应过程中,它们怎样配合起来工作?&&&&答:1.若IMR的某位为0则该位对应的引腿上的中断请求未加屏蔽,让它通过而进入中断优先级裁决器作裁决。若IMR的某位为1则屏蔽该位对应的引腿上的中断请求,不让它进入中断优先级裁决器。而CPU的中断允许标志IF为1则允许INTR引腿进入的中断,IF为0则屏蔽INTR引腿进入的中断。与8259A的IMR位为0为1正好相反。&&&&2.在中断响应过程中,IMR用于对外设向8259A发中断申请的允许/屏蔽,而CPU的IF用于对8259A由INT向CPU的INTR引腿发中断申请的允许/屏蔽。&&&&7.3 8259A的全嵌套方式和特殊全嵌套方式有什么差别?各自用在什么场合?&&&&答:1.全嵌套工作方式,只有更高级的中断请求来到时,才会进行嵌套。而特殊全嵌套方式则能被同级和高级的中断请求所嵌套。&&&&2.全嵌套方式用于单片8259A的场合。特殊全嵌套方式用于多片8259A系统。&&&&7.4 8259A的优先级循环方式和优先级特殊循环方式有什么差别?&&&&答:在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也由此而定。而优先级自动循环方式初始优先级队列为IR0~IR7。&&&&7.5 8259A的特殊屏蔽方式和普通屏蔽方式相比,有什么不同之处?特殊屏蔽方式一般用在什么场合?&&&&答:1.在特殊屏蔽方式中用OCW1对屏蔽寄存器中某一位进行置位时,就会同时使ISR中的对应位自动清0。而普通屏蔽方式对OCW1的操作不影响ISR中各位的状态。&&&&2.特殊屏蔽方式用于中断处理程序中,以开放比本身的优先级较低的中断请求。&&&&7.6 8259A有几种结束中断处理的方式?各自应用在什么场合?除了中断自动结束方式以外,其他情况下如果没有在中断处理程序中发中断结束命令,会出现什么问题?&&&&答:1.8259A有三种结束中断处理的方式。&&&&2.中断自动结束方式用于只有一片8259A,并且多个中断不会嵌套的情况。一般的中断结束方式用在全嵌套情况下及多片8259A的级联系统中。特殊中断结束方式用于循环优先级的8259A中。&&&&3.不发中断结束命令会使8259A认为该中断未结束,从而挡住了低优先级的中断被响应,即中断控制功能不正常。&&&&7.7 8259A引入中断请求的方式有哪几种?如果对8259A用查询方式引入中断请求,那会有什么特点?中断查询方式用在什么场合?&&&&答:1.引入中断请求的方式有:边沿触发方式、电平触发方式、中断查询方式三种。&&&&2.中断查询方式的特点:&&&&① 设备仍然通过往8259A发中断请求信号要求CPU服务,但8259A不使用INT信号向CPU发中断请求信号。&&&&② CPU内部的中断允许触发器复位,所以禁止了外部对CPU的中断请求。&&&&③ CPU要使用软件查询来确认中断源,从而实现对设备的中断服务。&&&&3.中断查询方式一般用在多于64个中断的场合,也可以用在一个中断服务程序中的几个模块分别为几个中断设备服务的情况。&&&&7.8 8259A的初始化命令字有哪些?它们各自有什么含义?哪几个应写入奇地址?哪几个应写入偶地址?&&&&答: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/=1表示本片为主片,M/=0为从片;AEOI=1则设置为中断自动结束方式。当μPM=1表示8259A当前所在系统为系统,反之μPM=0则为系统。&&&&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的命令字为BH&&&&OUT
;ICW1送偶地址端口&&&&MOV AL,60H
;ICW2的命令字为60H&&&&OUT
;ICW2送奇地址端口&&&&MOV AL,13H
;ICW4的命令字为H&&&&OUT
;ICW4送奇地址端口&&&&7.12 怎样用8259A的屏蔽命令字来禁止IR3和IR5引腿上的请求?又怎样撤销这一禁止命令?设8259A的端口地址为90H、92H。&&&&答:1.
;(AL)←(IMR)&&&&OR
;禁止IR3和IR5引腿上的中断请求&&&&OUT
;OCW1送奇地址端口&&&&STI&&&&2.
;(AL)←(IMR)&&&&AND AL,0D7H
;允许IR3和IR5引腿上的中断请求&&&&OUT
;OCW1送奇地址端口&&&&STI&&&&7.13 试用OCW2对8259A设置中断结束命令,并使8259A按优先级自动循环方式工作。&&&&答:
MOV AL,0A0H ;OCW2的命令字为B=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又按照原优先级方式工作。&&&&2.用“或”的方法来设置屏蔽字可以不影响其他位的屏蔽状态。&&&&&&&&&&&&&&&&7.16 80386系统中,8259A采用了级连方式,试说明在主从式中断系统中8259A的主片和从片的连接关系。&&&&答:从片的INT输出接主片的IR0~IR7的某一输入端;主片的CAS2~CAS0接从片的CAS2~CAS0;主片的和从片的连在一起接CPU的输出端;主片和从片的、、D7~D0也都连在一起和CPU的、、DB7~DB0连接;主片和从片的A0连在一起接系统总线的AB1上;主片的/接数据驱动器的端,从片的/接地;主片和从片的各自接在地址译码器的一个输出端上。&&&&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高,、或、有效,16位地址送地址总线。从模块工作时的控制信号:和HRQ为低,A3~A0为某一确定值,或有效。&&&&7.20 8237A有哪几种工作模式?各自用在什么场合?&&&&答:1.8237A有4种工作模式:单字节传输模式、块传输模式、请求传输模式、级联传输模式。&&&&2.单字节传输模式用于单个字节的DMA输入/输出;块传输模式用于连续进行多个字节的传输;请求传输模式用于受接口控制的连续字节传输;级联传输模式用于多片主从式DMA系统中的主片的工作模式。&&&&7.21 什么叫DMA控制器的自动预置功能?这种功能是用得很普遍的,举一个例子说明它的使用场合。&&&&答:1.自动预置功能就是DMA控制器某通道在当前字节计数器的计数值到达0时,当前地址寄存器和当前字节计数器会从基本地址寄存器和基本字节计数器中自动重新取得新值,从而又可以进入下一个数据传输过程。&&&&2.如IBMPC/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的端口地址为FH,设通道0工作在块传输模式,地址加1变化,自动预置功能;通道1工作于单字节读传输,地址减1变化,无自动预置功能;通道2、通道3和通道1工作于相同方式。然后对8237A设控制命令,使DACK为高电平有效,DREQ为低电平有效,用固定优先级方式,并启动8237工作。&&&&答:
MOV AL,04H&&&&MOV DX,DMA+8
;DMA为端口首地址0000H,DMA+8为控制寄&&&&;存器端口号&&&&OUT
;输出控制命令,关闭8237A&&&&MOV AL,00&&&&MOV DX,DMA+0DH ;DMA+0DH为总清命令端口号&&&&OUT
;发总清命令(即复位命令)&&&&MOV DX,DMA+0BH ;DMA+0BH为模式寄存器的端口号&&&&MOV AL,98H&&&&OUT
;对通道0选择模式,模式字为98H:块读传输模&&&&;式,地址加1变化,自动预置功能&&&&MOV AL,69H&&&&OUT
;对通道1选择模式,模式字为69H:单字节读传&&&&;输,地址减1变化,无自动预置功能&&&&MOV AL,6AH&&&&OUT
;对通道2选择模式,模式字为6AH:功能同通道1&&&&MOV AL,6BH&&&&OUT
;对通道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
;去除四个通道的屏蔽&&&&┆&&&&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 AL,74H ;设置计数器1为模式2&&&&OUT
76H,AL&&&&MOV AX,2010H ;写计数初值&&&&OUT
72H,AL&&&&MOV AL,AH&&&&OUT
72H,AL&&&&MOV AL,0B8H ;设置计数器2为模式4&&&&OUT
76H,AL&&&&MOV AX,4030H ;写计数初值&&&&OUT
74H,AL&&&&MOV AL,AH&&&&OUT
74H,AL&&&&7.30 CPU对应DMA控制器的总线请求响应要比中断请求响应快,请分析其原因。&&&&答:当CPU检测到总线请求信号后在当前总线周期的T4状态或TI状态的下降沿就可响应而出让总线,并发总线响应信号HLDA。而当CPU检测到INTR请求时,则必须要等到当前指令执行完后才能发第一个负脉冲,而且中断响应需两个负脉冲才可组成一个完整的中断响应信号。因此总线请求响应要比中断请求响应快。&&&&7.31 设8259A工作于优先级循环方式,当前最高优先级为IR4,现在要使优先级最低的为IR1,则应该再设置哪个操作命令字?具体的值是多少?&&&&答:1.再设置OCW2操作命令字。&&&&2.OCW2的具体的值是C1H(=B),写入偶地址端口。&&&&7.32 下面是一个对8259A进行初始化的程序段,请为下面程序段加上注释,并具体说明各初始化命令字的含义。&&&&PORT0
;8259A的偶地址端口号&&&&PORT1
;8259A的奇地址端口号&&&&┆&&&&MOV AL,13H ;控制初始化命令字ICW1设为13H,中断请求为边沿触&&&&;发方式,单片8259A,需写入ICW4&&&&MOV DX,PORT0;取8259A的偶地址端口&&&&OUT
;设置ICW1&&&&INC
;取8259A的奇地址端口&&&&MOV AL,08H ;中断类型码初始化命令字ICW2设为08H,对应于&&&&;IR0~IR7的中断类型码为08H~0FH&&&&OUT
;设置ICW2&&&&MOV AL,06H ;方式控制初始化命令字ICW4设为06H,非特殊全嵌套&&&&;方式,非缓冲方式,中断自动结束方式,工作于&&&&;系统中&&&&OUT
;设置ICW4&&&&答:初始化命令字的含义见注释。&&&&7.33 下面是一个对主从式8259A系统进行初始化的程序段,请对以下程序段加详细注释,并具体说明各初始化命令字的含义。&&&&;主片初始化程序&&&&M82590 EQU 40H
;主片8259A的偶地址端口号&&&&M82591 EQU 41H
;主片8259A的奇地址端口号&&&&┆&&&&MOV AL,11H
;控制初始化命令字ICW1设为11H,中断请求为边沿触&&&&;发方式,多片8259A,需设置ICW4&&&&MOV DX,M82590;取主片8259A的偶地址端口&&&&OUT
;设置ICW1&&&&MOV AL,08H ;中断类型码初始化命令字ICW2设为08H,对应于&&&&;IR0~IR7的中断类型码为08H~0FH&&&&INC
;取主片8259A的奇地址端口&&&&OUT
;设置ICW2&&&&MOV AL,04H ;ICW3设为04H,只有IR2连有从片8259A&&&&OUT
;设置ICW3&&&&MOV AL,01H ;方式控制初始化命令字ICW4设为01H,非特殊全嵌套&&&&;方式,非缓冲方式,非中断自动结束方式,工作于&&&&;系统中&&&&OUT DX,AL ;设置ICW4&&&&;从片初始化程序&&&&S82590
;从片8259A的偶地址端口号&&&&S82591
;从片8259A的奇地址端口号&&&&┆&&&&MOV DX,S82590;取从片8259A的偶地址端口&&&&MOV AL,11H
;控制初始化命令字ICW1设为11H,功能同上&&&&OUT
;设置ICW1&&&&MOV AL,70H ;中断类型码初始化命令字ICW2设为70H,对应于&&&&;IR0~IR7的中断类型码为70H~77H&&&&INC
;取从片8259A的奇地址端口&&&&OUT
;设置ICW2&&&&MOV AL,02H ;ICW3设为02H,表示本从片与主片的IR2相连&&&&OUT
;设置ICW3&&&&MOV AL,01H ;方式控制初始化命令字ICW4设为01H,非特殊全嵌套&&&&;方式,非缓冲方式,非中断自动结束方式,工作于&&&&;系统中&&&&OUT
;设置ICW4&&&&答:各初始化命令字的含义见注释。&&&&7.34 8237A在进行单字节方式DMA传输和块方式DMA传输时,有什么区别?&&&&答:区别在于:单字节方式时DMA每完成一个字节传输后,便释放系统总线,CPU至少可占用一个总线周期。块传输方式时,只有当字节计数器减为0,从而在端输出一个负脉冲或者外部I/O接口往DMA控制器的端送一个低电平信号时,8237A才释放总线而结束传输。&&&&7.35 下面是一个常驻内存的中断服务程序框架和它的装配程序,请对此程序的注释进行补充,以便得到一个完整的注释清单。&&&&STACK SEGMENT
;设置堆栈段&&&&DW
DUP(?)&&&&STACK ENDS&&&&DATA
;设置数据段&&&&8259P0
;8259A的偶地址端口号&&&&8259P1
;8259A的奇地址端口号&&&&┆&&&&DATA
ENDS&&&&CODE
;设置代码段&&&&ASSUME CS:CODE,DS:DATA,SS:STACK ;段说明&&&&START1: JMP
;程序开始,直接转START2执行&&&&INTSUB PROC FAR
;定义一个远过程(段外子程序)INTSUB&&&&STI
;开中断&&&&PUSH ES
;保护现场&&&&PUSH DS&&&&PUSH AX&&&&PUSH BX&&&&PUSH SI&&&&PUSH DI&&&&┆
;中断处理内容&&&&POP
;恢复现场&&&&POP
ES&&&&MOV AL,20H
;发一般的中断结束命令&&&&MOV DX,8259P0
;取8259A偶地址&&&&OUT
DX,AL&&&&IRET
;中断返回&&&&INTSUB ENDP
;远过程定义结束&&&&START2: MOV AX,DATA
;程序开始,取数据段的段地址送DS&&&&MOV DS,AX&&&&MOV AL,45H
;设置中断向量的系统功能调用的入口条件&&&&MOV AH,25H&&&&MOV DX,OFFSETINTSUB&&&&INT
;设置中断向量&&&&MOV AL,0
;OCW1=00H,开放8259A的所有中断&&&&MOV DX,8259P1
;取8259A的奇地址号&&&&OUT
DX,AL&&&&STI
;开中断&&&&MOV AX,3100H
;终止用户程序并驻留内存的入口条件&&&&MOV DX,$–INTSUB&&&&INT
;程序驻留退出&&&&CODE
;代码段结束&&&&END
;程序结束&&&&答:注释见程序清单的下划线部分。&&&&7.36 8259A在采用边沿触发方式时,为了防止IR端有毛刺产生中断,因此通常也要求有足够的脉冲宽度,这一点由8259A的内部性能所决定。所以,中断控制器的初始化命令字虽用边沿触发,但是,中断请求信号却是某个脉冲信号。你认为,这种情况下,设置边沿触发方式和设置电平触发方式相比,有什么优点?&&&&答:电平触发方式时,中断请求信号必须在第一个脉冲结束之前保持高电平,而此时的中断请求信号却是某个脉冲信号,不一定能满足电平触发方式的要求,可能会造成中断请求得不到响应。而此信号能满足边沿触发方式对中断请求信号的要求,可基本保证能得到中断响应(IF=1)。&&&&7.37 下面是一个8253的初始化程序段。8253的控制口地址为46H,3个计数器端口地址分别为40H、42H、44H。在8253初始化前,先将8259A的所有中断进行屏蔽,8259A的奇地址端口为82H。请对下面程序段加详细注释,并以十进制数表示出各计数器的值。&&&&INI:
;CPU关中断&&&&MOV AL,0FFH ;8259A屏蔽中断&&&&OUT
82H,AL&&&&MOV AL,36H ;设置计数器0控制字,工作于模式3&&&&OUT
46H,AL&&&&MOV AL,0
;设置计数器0的计数初值为&&&&OUT
40H,AL&&&&MOV AL,40H&&&&OUT
40H,AL&&&&MOV AL,54H ;设置计数器1控制字,工作于模式2,低8位字节读/写&&&&OUT
46H,AL&&&&MOV AL,18H ;设置计数器1的计数初值为18H=24&&&&OUT
42H,AL&&&&MOV AL,0A6H ;设置计数器2控制字,工作于模式3,高8位字节读/写&&&&OUT
46H,AL&&&&MOV AL,46H ;设置计数器2的计数初值为&&&&OUT
44H,AL&&&&MOV AL,80H ;修改计数器2的计数初值为&&&&OUT
44H,AL&&&&答:注释见程序清单,计数器初值的十进制值也见注释。&&&&7.38 下面是一个用8253作为定时器的发音程序,程序中已加了部分注释。请对8253的有关程序段加上注释,并画出整个程序的流程图。8253的控制口地址为46H,3个计数器端口地址分别为40H、42H、44H。8255A的B端口接扬声器驱动电路,B端口的地址为62H。&&&&SOUND: PUSHF&&&&CLI&&&&OR
;DH中为发长音的个数&&&&JZ
;如不发长音,则转K3&&&&K1:
;如发长音,则置长音计数器&&&&CALL BEEL
;调用发音程序&&&&K2:
;两音之间留一点间隙&&&&DEC
;长音发完否&&&&JNZ
;否,则继续&&&&K3:
;如发完长音,则置短音计数器&&&&CALL BEEL
;调用发音程序&&&&K4:
;两音之间留一点间隙&&&&DEC
;继续发短音吗&&&&JNZ
;是,则继续&&&&K5:
;否,则留一点间隙&&&&POPF
;标志恢复&&&&RET
;返回&&&&BEEL:
MOV AL,B6H ;发音子程序开始&&&&OUT
46H,AL ;8253的计数器2工作于模式3&&&&MOV AX,533H ;计数初值为533H&&&&OUT
44H,AL ;送初值低位&&&&MOV AL,AH&&&&OUT
44H,AL ;送初值高位&&&&IN
AL,62H ;取扬声器驱动信息&&&&MOV AH,AL&&&&OR
;接通扬声器&&&&OUT
62H,AL ;扬声器驱动&&&&SUB
;一次发音时间设定&&&&K7:
LOOP K7&&&&DEC
;BL中为发音计数值&&&&JNZ
;如未结束,则继续发音&&&&MOV AL,AH
;如发音结束,则恢复B端口信息&&&&OUT
62H,AL&&&&RET&&&&答:补充的注释见程序清单中的下划线部分。程序流程图如下所示。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&第十章模/数和数/模转换&&&&8.1 什么叫分辨率?什么叫相对转换精度?&&&&答:1.在D/A转换时,将最低位增1所引起的增量和最大输入量的比称为分辨率。即:分辨率=1/(2n-1)。&&&&2.用绝对转换精度相对于满量程输出的百分数表示的精度即为相对转换精度。有时也用最低位(LSB)的几分之几表示。&&&&8.2 在T型电阻网络组成的D/A转换器中,设开关K0、K1、K2、K3、K4分别对应一位二进制数,当二进制数据为10110时,流入运算放大器的电流为多少?画出这个T型网络。&&&&答:1.流入运算放大器的电流I为:(n=5)&&&&2.T型网络如下图:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&8.3 用带两级数据缓冲器的D/A转换器时,为什么有时要用三条输出指令才完成16位或12位数据转换?&&&&答:因为一般第一次将低8位数据送输出低位的第一级数据缓冲器,第二次输出高4位或高8位数据到高位的第一级数据缓冲器。第三次执行一次伪输出,将第一级数据缓冲器的内容打入第二级数据缓冲器从而实现高于8位的D/A转换。因此要用3条输出指令才能完成一次16位或12位数据转换。以避免出现错误的中间结果。&&&&8.4 使用DAC0832进行数/模转换时,有哪两种方法可对数据进行锁存?&&&&答:第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在不锁存状态。第二种方法是使输入寄存器工作在不锁存状态,而DAC寄存器工作在锁存状态。&&&&8.5 在数字量和模拟量并存的系统中,地线连接时要注意什么问题?&&&&答:首先各个模拟地连在一起,各个数字地连在一起;其次模拟地和数字地只能且必须用一个共地点连起来,以防干扰。&&&&8.6 设计一个电路和相应程序完成一个锯齿波发生器的功能,使锯齿波呈负向增长,并且锯齿波的频率可调。&&&&答:①电路如下图所示:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&②程序如下:&&&&MOV DX,PORTDA ;PORTDA为D/A转换器的端口号&&&&MOV AL,0
;初值&&&&ROTATE: DEC
;呈负向增长&&&&OUT
;往D/A转换器输出数据&&&&CALL DELAY
;延迟&&&&JMP
ROTATE&&&&DELAY: MOV CX,DATA
;往CX中送延迟常数,修改DATA即可改变周期&&&&DELAY1: LOOP DELAY1&&&&RET&&&&8.7 什么叫模/数转换精度?什么叫转换速率?什么叫分辨率?&&&&答:1.反映A/D转换器的实际输出接近理想输出的精确程度叫模/数转换精度。&&&&2.完成一次A/D转换所需要的时间的倒数叫转换速率。&&&&3.A/D转换器能够分辨最小的量化信号的能力叫分辨率。&&&&8.8 参考《微型计算机技术及应用》一书中图8.12说明计数式A/D转换的工作原理。&&&&答:首先启动信号S由高电平变为低电平,使计数器清0,当启动信号恢复高电平时,计数器准备计数。开始,D/A转换器的输出电压VO为0,此时,运算放大器在同相端的输入电压作用下,输出高电平,从而使计数信号C为1。于是,计数器开始计数,D/A转换器输入端获得的数字量不断增加,使输出电压VO不断上升。在VO小于Vi时,运算放大器的输出总是保持高电平。当VO上升到某个值时,会出现VO大于Vi的情况,这时,运算放大器的输出变为低电平,即C为0。于是,计数器停止计数。这时候的数字输出量D7~D0就是与模拟输入电压对应的数字量。计数信号C的负向跳变也是A/D转换的结束信号。它用来通知其他电路,当前已经完成一次A/D转换。&&&&8.9 双积分式A/D转换的原理是什么?&&&&答:一开始,电路对输入的未知模拟量进行固定时间的积分,然后转换为对标准电压进行反向积分。反向积分到一定时候,便返回起始值。因此对标准电压的反向积分时间T正比于输入模拟电压Vi,Vi越大,T越长。只要用标准的高频时钟频率测定反向积分花费的时间,就可得到输入模拟电压所对应的数字量,即实现了A/D转换。&&&&8.10 参考《微型计算机技术及应用》一书中图8.14说明逐次逼近式A/D转换的工作原理。&&&&答:当启动信号由高电平变为低电平时,逐次逼近寄存器清0,这时,D/A转换器输出电压VO也为0,当启动信号变为高电平时,转换开始,同时,逐次逼近寄存器进行计数。逐次逼近寄存器工作时与普通计数器不同,它不是从低位往高位逐一进行计数和进位,而是从最高位开始,通过设置试探值来进行计数。具体讲,在第一个时钟脉冲时,控制电路把最高位送到逐次逼近寄存器,使它的输出为B,这个输出数字一出现,D/A转换器的输出电压VO就成为满量程的128/255。这时,如果VO大于Vi,那么,作为比较器的运算放大器的输出就成为低电平,控制电路据此清除逐次逼近寄存器的最高位;如果VO小于或等于Vi,则比较器输出高电平,控制电路使最高位的1保留下来。如果最高位被保留下来,那么,逐次逼近寄存器的内容为B,下一个时钟脉冲使次高位D6为1。于是,逐次逼近寄存器的值为B,D/A转换器的输出电压VO到达满量程的192/255。此后,如果VO大于Vi,则比较器输出为低电平,从而使次高位D6复位;如果VO小于或等于Vi,则比较器输出高电平,从而保留次高位D6为1。再下一个时钟脉冲对D5位置1,然后据此对VO和Vi的比较,决定保留还是清除D5位上的1……重复上述过程,直到D0=1,再与输入电压比较。经过N次比较后,逐次逼近寄存器中得到的值就是转换后的数据。转换结束以后,控制电路送出一个低电平作为结束信号,这个信号的下降沿将逐次逼近寄存器中的数字量送入缓冲寄存器,从而得到数字量输出。&&&&8.11 比较计数式、双积分式和逐次逼近式A/D转换的优缺点。&&&&答:计数式的优点是电路比较简单,但速度较慢。双积分式的优点是精度高、干扰小,但速度慢。逐次逼近式的优点是速度快,但抗干扰较双积分式差。&&&&8.12 设计一个电路并画出软件流程以实现A/D转换,软件流程中要体现逐次逼近法思想。&&&&答:1.电路见书344页图8.15所示。&&&&2.软件流程图见上页右图所示:&&&&8.13 什么叫采样保持电路的采样状态和保持状态?用示意图说明。&&&&答:①采样状态:输出随输入而变化,增益为1。书351页图8.20的状态控制开关闭合。&&&&②保持状态:输出保持为某个值。图8.20的状态控制开关断开,电容保持充电时的最终电压值,使A2输出不变。&&&&8.14 在实时控制和实时数据处理系统中,当需要同时测量和控制多路信息时,常用什么方法解决?&&&&答:①首先使用公共的A/D、D/A转换器;&&&&②然后用独立的的多路转换模拟开关来轮流切换各回路和A/D、D/A之间的通路。&&&&③或者选择内部本身带有多路转换模拟开关的A/D、D/A转换器。&&&&&&&&&&&&&&&&&&&&第十一章键盘&&&&9.1 利用行扫描法来识别闭合键的工作原理是什么?为什么在识别一个键前,先快速检查键盘中是否有键按下?快速识别有无闭合键的方法是什么?&&&&答:1.从第0行开始扫描,看是否是该行的键闭合,直至最后一行扫描结束。(每扫一行输入列值,检查此行是否有键闭合,若有键闭合则转去识别该键;若无键闭合,则扫描下一行……)&&&&2.为了提高程序运行的速度,在无键按下时无需进行行扫描。&&&&3.先使所有各行同时为低电位,再检查是否有列线也处于低电位。若有某列线处于低电位,则说明必有键按下,否则无键按下。&&&&9.2 设计一个用行扫描法识别闭合键的扫描程序,设键盘上有4×5个键,并行口A接四根行线,并行口B接五根列线,两个端口的地址分别为PORTA、PORTB。&&&&答:START: MOV AL,00H
;判断是否有键按下的程序&&&&MOV DX,PORTA&&&&OUT
;往4根行线输出低电平&&&&MOV DX,PORTB&&&&IN
;读取列值&&&&AND AL,1FH
;列值只有低5位有效&&&&CMP
;是否有列线处于0电位&&&&JZ
;无闭合键,循环等待&&&&CALL DELAY
;有闭合键,则延时20ms消抖&&&&SCAN: MOV BL,0
;键号初值为0&&&&MOV CL,0FEH
;送扫描初值&&&&MOV BH,4
;计数值为行数(4行)&&&&SCAN1: MOV AL,CL&&&&MOV DX,PORTA&&&&OUT
;扫描一行&&&&RCL
;修改扫描值&&&&MOV CL,AL&&&&MOV DX,PORTB&&&&IN
;读取列值&&&&AND AL,1FH
;列值只有低5位有效&&&&CMP
;是否有列线处于0电位&&&&JNZ
;有列线接地,则转SCAN2&&&&MOV AL,BL
;如无列线接地,则键号=键号+列数/每行&&&&ADD AL,5&&&&MOV BL,AL&&&&DEC
;扫描下一行&&&&JNZ
;未扫描完,继续扫描&&&&JMP
;已扫完,无键按下,则转DONE&&&&SCAN2: RCR
;如此列接地则转NEXT&&&&JNC
NEXT&&&&INC
;如未找到接地的列线,则转SCAN2继续寻找&&&&NEXT: ┆
;键命令处理程序&&&&DONE: ┆
;后续处理程序&&&&9.3 叙述行反转法的基本工作原理,画出行反转法的程序流程。&&&&答:1.行反转法的基本工作原理:将行线接一个并行口,使其工作于输出方式;将列线接一个并行口,使其工作于输入方式;程序使CPU通过输出口往各行线上全送低电平,然后读入列线的值。若此时有某个键被按下,则必定会使某列线值为0。然后程序将两个并行端口的输入/输出方式调换,并将刚才读得的列线值从列线所接的并行口输出,再读取行线的输入值,在闭合键所在的行线上的值必定为0。这样当一个键被按下时,必定可以读得唯一的行值和列值。&&&&2.程序流程如右:&&&&9.4 连锁法和巡回发识别重建的基本思想是什么?&&&&答:①连锁法识别重建的基本思想是:在所有键释放后,只承认此后闭合的第一个键,对此键闭合时按下的其他键均不作识别,直到所有键释放以后,才读入下一个键。&&&&②巡回法识别重建的基本思想是:等前面所识别的键被释放以后,就可以对其他闭合键作识别。&&&&9.5 用连锁法识别重键时,对《微型计算机技术及应用》一书的图9.8中的三种重键情况分别如何处理?看懂图8.9的流程,并说明按标准的连锁法,此流程应如何修改?&&&&答:1.图9.8(a),只读入A键;图9.8(b),标准连锁法也只读入A键;图9.8(c)则无效,两键都不读入。&&&&2.标准连锁法的流程可按书362页图9.9来修改,即将等待释放的一部分改为等待所有键释放即可。方法是:在读进列值前加一个“使所有行为低电平”既可以了。&&&&9.6 巡回法是如何识别三种重键情况的?分析图9.10的流程图,并编写一个8行×8列的巡回法识别重键程序,端口地址用标号表示。&&&&答:1.图9.8(a),只识别A键;图9.8(b),A、B键同行则识别A键而舍弃B键,不同行则两键均识别;图9.8(c)若B键处于较小行号上则只读入B键,若B键处于较大行号上则两键均读入。&&&&2.START: MOV AL,00H&&&& MOV DX,RPORT
;取行端口号&&&&OUT
;使所有各行为低电平&&&&MOV DX,LPORT
;取列端口号&&&&IN
;读入列值&&&&CMP
;判断是否有键闭合&&&&JZ
;无键闭合,则退出&&&&CALL DELAY
;有键闭合,则延时消抖&&&&MOV AL,0FEH
;使第0行为低电平&&&&MOV CX,08H
;总行数送CX&&&&KEY: MOV DX,RPORT&&&&OUT
;使所选的一行为低电平&&&&PUSH AX
;保存行值&&&&MOV DX,LPORT&&&&IN
;读入列值&&&&CMP
;所选行上有闭合键吗?&&&&JNZ
;有键闭合,则转译码程序&&&&POP
;无键闭合,恢复行值&&&&SHL
;选择扫描下一行&&&&LOOP KEY&&&&JMP
;扫描结束则退出&&&&YE:
;键译码程序&&&&PUSH AX
;AX中为键值&&&&KEY1: MOV DX,LPORT
;读入列值&&&&IN
AL,DX&&&&CMP
;测试键是否已释放&&&&JNZ
;如未释放则等待&&&&CALL DELAY
;已释放则再去抖动&&&&POP
;AX中为键值&&&&┆
;键命令处理&&&&QUIT: RET
;返回&&&&&&&&&&&&&&&&&&&&

我要回帖

更多关于 io接口和io端口的区别 的文章

 

随机推荐