第7章习题及参考解答1.什么是I/O接口?I/0接口在系统中起何作用?解I/O接口就是连接外设和总线之间的逻辑电路的总称,它实际上是总线主设备与外设之间的桥梁。I/O接口的作用是为了解决CPU与外设连接时由于速度、信号电平、信号格式及时序等的不匹配而存在的矛盾。2.I/O接口有哪些重要功能?解I/O接口应具有数据缓冲、设备选择、信号转换、对外设监测和控制、中断请求与管理、可编程等主要功能。但不是要求每种接口都具备上述全部功能,有的只具有其中某几项功能。3.什么是I/O端口?它与I/O接口有何关系?解I/O端口是指I/O接口电路中能被CPU直接访问的寄存器或某些特定器件(如触发器或锁存器等)。一个I/O接口电路中可能有一个或若干个端口,如命令口、状态口、数据口等;而I/O端口都有确切的地址(或编号)。4.I/O端口编址方式有哪两种?各适用于什么场合?各有什么优缺点?解I/O端口编址方式有两种:与存储器统一编址和I/O单独编址。若CPU没有设置专门的I/O指令,则必须采用与内存统一编址方式;若CPU设置了专门的I/O指令,则两种方式都可采用。与内存统一编址的好处是:可以使用访问内存的所有指令访问I/O。这样访问I/O的指令类型多,功能齐全,不仅可对端口进行数据传送,还可以对端口进行算术、逻辑运算及移位等操作;其次是端口有较大的编址空间。缺点是:占用了部分内存空间;端口指令的长度增加、执行时间变长;程序中不易分清访问内存还是访问I/O;端口地址译码器复杂度增加。I/O单独编址的好处是:端口地址译码器简单:端口指令短、执行速度快;程序中易分清是访问内存还是访问I/O。缺点是:端口指令类别少,CPU需专门设置I/O指令,且增加了CPU对外的信号线(因为要分出内存读/写与I/O读/写两组信号)。5.CPU与I/O之间数据传送的方式有哪几种?各有什么特点?解CPU与I/O之间数据传送方式有四种,即无条件传送、程序查询传送、中断传送与DMA传送。有的教材中把前两种合在一起称为程序查询传送。第一种的特点是:接口电路简单,传送时总认为外设处于准备好状态;传送速度不高,效率低。第二种的特点是:接口电路中需增加握手信号,因为CPU在传送数据前要查询I/O的状态,当I/O准备就绪时才进行数据传送。CPU的大部分时间用于查询等待中,传送效率低。第三种的特点是:接口电路中需有中断逻辑,当I/O需要与CPU交换数据时,向CPU申请中断,CPU收到中断请求信号后即中断当前任务的执行,根据中断源的向量号转入相应的服务程序,以实现对I/O的数据交换及管理。该方式大大提高了CPU的利用率,实现了I/O与CPU并行工作。第四种的特点是:在外设与存储器之间开辟了一条高速数据通道,使外设与内存之间直接交换数据。这一数据通道是通过DMA(DirectMemoryAccess)控制器来实现的。在DMA方式中,不需要CPU的任何干预,而是由DMA控制器控制系统总线。在其控制下完成数据传送任务。该方式实际上是把外设与内存交换信息的操作和控制交给了DMA控制器,简化了CPU对输入/输出的控制,但电路结构复杂,硬件开销大,硬件成本增加。6.简述DMA传送的过程及该方式有何特点。解DMA(DirectMemoryAccess)传送方式又称为直接存储器存取方式,实际上就是在存储器与外设间开辟一条高速数据通道,使外设与内存之间直接交换数据。这一数据通道是通过DMA控制器来实现的。在DMA传送期间,不需要CPU的任何干预,而是由DMA控制器控制系统总线,在其控制下完成数据传送任务。首先,应由CPU告诉DMA控制器:DMA传送由内存向外设传送,数据在内存的首地址及数据块长度,然后CPU启动DMA与外设,并把总线控制权交给DMA控制器。此后的传送完全由DMA控制器来管理。传送一个字节的过程如下:(1)当外设可以接收一个字符时,外设向DMA控制器(而不是CPU)发出DMA请求DRQ。(2)DMA控制器收到DRQ有效后,即向CPU发出总线请求HOLD,请求CPU让出系统总线。(3)CPU在收到HOLD有效后,在当前总线周期(而不是指令周期)结束后,就使地址总线、数据总线和控制总线处于高阻状态(即CPU释放系统总线),发出HLDA来响应DMA控制器的请求,这时,CPU中止程序的执行,只监视HOLD的状态。(4)DMA控制器监测到HLDA有效后,即获得系统总线的控制权,并按如下方式开始DMA传送:在地址总线上发出存储器的地址。发出MEMR命令和IOW命令,同时向外设发出DACK和AEN。于是,由地址和MEMR所选中的内存单元的数据就送到数据总线上,而由DACK和IOW选中的外设来接收数据总线上的数据。之后DMA控制器自动修改内存地址,字节计数器减1。直至数据块传送结束。(5)DMA控制器撤销HOLD,使系统总线浮空。CPU监测到HOLD失效后,就撤销HLDA,在下一时钟周期开始收回系统总线,继续执行原来的程序。DMA传送原理示意图如下:系统总线CPU存储器输出设备DMA控制器HOLDHLDA可以看出,DMA传送方式的响应时间短,省去了中断管理中CPU保护和恢复现场的麻烦,从而减少了CPU的开销。DMA控制器是一种专门设计的主要用于数据传送的器件,它免去了CPU取指令和分析指令的操作,而只剩下了指令中的执行传送的机器周期,且DMA存取可在同一机器周期内完成对存储器和外设的存取操作(而CPU则必须在两个机器周期中分别进行),另外在DMA传送中,地址修改与计数器减1都是由硬件直接进行的,这样就不难理解DMA传送速度为什么会快了。7.I/O端口地址译码电路在接口电路中的作用是什么?解I/O端口地址译码电路的作用是把地址信号和控制信号进行逻辑组合,从而产生对接口芯片的选择信号。8.I/O端口地址译码电路一般有哪几种结构形式?解I/O端口地址译码电路的结构形式一般可分为固定式译码和可选式(用开关和比较器)译码。若按译码电路采用的元器件来分,可分为门电路地址译码和译码器地址译码。另外还可用GAL芯片进行地址泽码。9.I/O地址线用做端口寻址时,高位地址线和低位地址线各有何用途?如何决定低位地址线的条数?解一般是把I/O地址线分为两部分,一部分是高位地址线与CPU的控制信号进行组合,经译码电路产生I/O接口芯片的片选CS信号,实现系统中的片间寻址;另一部分是低位地址不参加译码,直接连接到I/O芯片,进行I/O接口芯片的片内端口寻址,即寄存器寻址。低位地址线又称为I/O接口中的寄存器寻址线。从系统角度考虑,低位地址线的条数由系统中含有寄存器数目最多的接口芯片来决定。10.何谓全译码电路?何谓部分译码电路?解I/O电路中只有部分地址信号参加译码,该电路称为部分译码电路。部分译码电路简单,使用地址线少,但译出的地址有重叠。I/O电路中所有地址线都参加了译码,该电路称为全译码电路。全译码电路中译出的地址是唯一的,不会产生地址重叠。11.计算主教材图7.10所示的开关可选式译码电路的地址范围是多少?解根据图7.10所给译码电路计算地址范围是200H~3FFH。因为A9=1是固定的,A3~A8是随开关变化的,可从000000B~111111B变化,A2~A0是随译码器变化的,可从000~111变化,于是地址变化范围是200H~3FFH。上面一片译码器LS138译出的I/O口地址只允许读,下面一片译码器LS138译出的I/O口地址只允许写。12.试说明中断过程包括哪些步骤。每步实现哪些基本功能。解中断过程包括中断请求、中断判优、中断响应、中断服务和中断返回5个步骤。①中断请求是需要服务的外设(中断源)向CPU发出的请求信号,该信号分为边沿请求和电平请求。②中断判优是当系统中出现两个或两个以上的中断时,而CPU任一时刻只能响应并处理一个中断,所以要解决中断的事件优先级的顺序问题,这就要进行中断判优。中断判优就是CPU优先响应几个同时申请的中断源级别最高的中断源的请求。③中断响应是CPU中断现正进行的处理任务,转向中断请求相对应的处理程序的过程。在中断响应过程中,要保护断点和现场,关中断,根据向量号转入中断请求所对应的处理程序。④中断服务就是执行中断服务程序。以完成中断源提出的处理要求。中断服务程序是根据外设的要求进行的软件编程问题。⑤中断返回就是CPU控制权由中断服务程序转移到被中断程序的过程。返回时要部分或全部恢复CPU的现场(包括断点地址)。13.说明8086/8088响应NMI的过程。说明CPU响应软件中断INTn、NMI和INTR的异同。解NMI是不可屏蔽中断请求信号,它不受中断标志IF的控制。CPU在响应NMI的请求时,不向NMI的中断源发中断响应周期INTA,也不用外设接口给出中断矢量号,CPU会自动生成NMI的矢量号2,然后根据2×4和2×4+2查找向量表地址,取出相对应的中断处理程序的入口地址,转入相应的服务程序。软中断INTn、NMI、INTR三种中断的相同点:·都使CPU中断当前的程序,转向它们请求相对应的处理程序;·中断响应过程应解决的问题是一样的(如保护断点和现场、关中断、根据矢量号查找向最表等)。软中断INTn、NMI、INTR三种中断的不同点:‘软中断不向CPU发中断清求信号,而NMI、INTR请求巾断需向CPU发中断请求信号;·INTR的请求受IF标志的控制,而NMI和INTn的中断不受IF标志的控制;·软中断INTn和NMI在中断响应期间CPU不发送中断响应周期INTA,而INTR在响应期间,CPU需向中断控制器8259A发送两个中断响应周期INTA;·软中断INTn和NMI的矢量号是指令或CPU自动提供的,而INTR的矢量号是中断控制器提供的。14.说明8259A在单级方式和级联方式下响应中断时,是如何提供中断矢最号的?解8259A在单级方式下,8086CPU在响应中断时向8259A发送两个中断响应周期INTA,8259A在第二个INTA周期把请求中断的中断源的向量号通过数据总线D7~D0送给CPU,CPU可由此获得该中断源的服务程序的入口地址。8259A在级联方式下,中断系统中有主片,又有从片。在中断响应期间,若主片判定所响应的是某一从片来的中断请求,则它在级联线上发出该从片的识别号,并由该从8259A接收。从片把自己的号与该级联线上的号比较,若一致的话,它应在第二个INTA周期,把自己片内中断源的向量号通过D7~D0送给CPU,以便把控制引导到中断服务程序的入口地址。若检查不是从片发出的中断请求,则一定是主片自己发出的。则主片在第二个INTA周期把自己的片内中断源的向量号通过D7~D0送给CPU。15.8259A的中断请求寄存器何时置位?何时清零?解8259A内部有一个8位中断请求寄存器IRR,存放外部输入的中断请求信号IR0~IR7,当某个IR端有中断请求时,IRR相应的某位置“1”。可以允许8个中断请求信号同时进入,此时IRR寄存器被置成全“1”。当中断请求被响应时,IRR的相应位复位。16.8259A的“在服务”寄存器(ISR)何时置位,何时清零?IS寄存器有什么作用?解8259A内部有一个8位在服务寄存器ISR,对应着8个中断源被服务的状态。当某一中断源的请求被响应时,它对应的在服务寄存器ISR位置成“1”。因为8259A允许中断嵌套,所以在服务寄存器中可能不止一个ISRi置“1”。在服务寄存器ISR是利用“中断结束”(EOI)命令进行复位,8259A有三种EOI命令,所以ISR复位有三种情况:一般EOI命令,使当前优先级最高的ISR复位;指定EOI命令(SEOI),使指定的ISR复位;自动EOI命令(AEOI),使刚置“1”的ISR在中断响应结束时自动复位。在服务寄存器ISR的作用是:在中断响应时,判优电路把当前最优先的请求与ISR已置“1”的优先级比较,若高于已置“1”的优先级,则中断已置“1”的中断服务,而响应当前的中断;若低于已置“1”的优先级,则阻止响应当前的中断请求。所以ISR是实现中断嵌套的一种有效方法。17.8259A有哪几种优先结构?各是怎样工作的?解8