• 802.61 KB
  • 2022-04-22 11:39:25 发布

微型计算机技术及应用 第4版 (戴梅萼 史嘉权 著) 清华大学出版社 课后答案

  • 88页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)微型计算机技术及应用习题答案第一章微型计算机概述1.1微处理器、微型计算机和微型计算机系统三者之间有什么不同?答:①微处理器是微型计算机的核心,是微型计算机的一部分。它是集成在一块芯片上的CPU,由运算器和控制器组成。②微型计算机包括微处理器、存储器、I/O接口和系统总线,是微型计算机系统的主体。③微型计算机系统包括微型计算机、外设及系统软件三部分。1.2CPU在内部结构上由哪几部分组成?CPU应具备哪些主要功能?答:1.CPU在内部结构上由以下几部分组成:1算术逻辑部件(ALU);2累加器和通用寄存器组;3程序计数器(指令指针)、指令寄存器和译码器;4时序和控制部件。2.CPU应具备以下主要功能:1可以进行算术和逻辑运算;2可保存少量数据;3能对指令进行译码并执行规定的动作;课后答案网4能和存储器、外设交换数据;5提供整个系统所需要的定时和控制;6可以响应其他部件发来的中断请求。www.hackshp.cn1.3累加器和其他通用寄存器相比,有何不同?答:许多指令的执行过程以累加器为中心;输入/输出指令一般也以累加器来完成。1.4微处理器的控制信号有哪两类?答:一类是通过对指令的译码,由CPU内部产生的。这些信号由CPU送到存储器、I/O接口电路和其他部件。另一类是微型机系统的其他部件送到CPU的。通常用来向CPU发出请求。如中断请求、总线请求等。1.5微型计算机采用总线结构有什么优点?答:首先是系统中各功能部件之间的相互关系变为各个部件面向总线的单一关系。其次是一个部件只要符合总线标准,就可以连接到采用这种总线标准的系统中,使系统功能第2页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)得到扩充。1.6数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么,要靠什么来区分地址或数据?答:1.数据总线是双向三态;地址总线是单向输出三态。2.数据和地址复用时,必须有一个地址选通信号来区分该总线上输出的是地址还是数据。1.7控制总线传输的信号大致有哪几种?答:包括CPU送往存储器和I/O接口的控制信号,如读信号、写信号、中断响应信号、存储器和I/O接口区分信号等。还包括其他部件送到CPU的信号,如时钟信号、中断请求信号、准备就绪信号等。第二章808688086086微处理器2.1总线接口部件有哪些功能?请逐一进行说明。答:1.总线接口部件的功能是负责与存储器、I/O端口传送数据。2.具体讲:①总线接口部件要从内存取指令送到指令队列;②CPU执行指令时,总线接口部件要配合执行部件从指定的内存单元或者外设端口中取数据,将数据传送给执行部件,或者把执行部件的操作结果传送到指定的内存单元或外设端口中。课后答案网2.28086的总线接口部件由哪几部分组成?答:4个段地址寄存器CS、DS、ES、SS;16位的指令指针寄存器IP;20位的地址加法器;6字节的指令队列。www.hackshp.cn2.3段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?答:1.该指令的物理地址=CS×10H+IP=21F00H。2.指向这一物理地址的CS值和IP值不是唯一的。2.48086的执行部件有什么功能?由哪几部分组成?答:1.8086的执行部件的功能是负责指令的执行。2.4个通用寄存器AX、BX、CX、DX;4个专用寄存器BP、SP、SI、DI;标志寄存器FLAGS和算术逻辑单元ALU。2.5状态标志和控制标志有何不同?程序中是怎样利用这两类标志的?8086的状态标志和控第3页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)制标志分别有哪些?答:1.不同之处在于:状态标志由前面指令执行操作的结果对状态标志产生影响,即前面指令执行操作的结果决定状态标志的值。控制标志是人为设置的。2.利用状态标志可进行计算和判断等操作。利用控制标志可对某一种特定功能(如单步操作、可屏蔽中断、串操作指令运行的方向)起控制作用。3.8086的状态标志有:SF、ZF、PF、CF、AF和OF计6个。8086的控制标志有:DF、IF、TF计3个。2.68086/8088和传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点?答:1.传统的计算机在执行指令时,指令的提取和执行是串行进行的。8086/8088CPU的总线接口部件和执行部件在提取和执行指令时是并行同时工作的。2.8086/8088CPU的设计思想有力地提高了CPU的工作效率,这也正是8086/8088成功的原因之一。2.7总线周期的含义是什么?8086/8088的基本总线周期由几个时钟组成?如一个CPU的时钟频率为24MHz,那么,它的一个时钟周期为多少?一个基本总线周期为多少?如主频为15MHz呢?答:1.总线周期的含义是总线接口部件完成一个取指令或传送数据的完整操作所需的最少时钟周期数。2.8086/8088的基本总线周期由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在哪儿插入?怎样插入?www.hackshp.cn答:1.在总线周期的T1、T2、T3、T4状态,CPU分别执行下列动作:1T1状态:CPU往多路复用总线上发出地址信息,以指出要寻找的存储单元或外设端口的地址。2T2状态:CPU从总线上撤销地址,而使总线的低16位浮置成高阻状态,为传输数据做准备。总线的高4位(A19~A16)用来输出本总线周期的状态信息。3T3状态:多路总线的高4位继续提供状态信息。低16位(8088为低8位)上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。4T4状态:总线周期结束。2.当被写入数据或者被读取数据的外设或存储器不能及时地配合CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未第4页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)准备好的信号”,于是CPU会在T3之后插入一个或多个附加的时钟周期TW。3.TW插在T3状态之后,紧挨着T3状态。4.插入的TW状态时的总线上的信息情况和T3状态的信息情况一样。当CPU收到存储器或外设完成数据传送时发出的“准备好”信号时,会自动脱离TW状态而进入T4状态。2.9从引腿信号上看,8086和8088有什么区别?答:①8086有16根数据/地址复用总线,8088只有8根,称AD7~AD0。②8086的第28腿为M/IO,8088的第28腿为M/IO(为兼容8080等)。③8086的第34腿为SS0BHE/S7,8088的第34腿为。2.10在对存储器和I/O设备读写时,要用到IOR、IOW、MR、MW信号,这些信号在最大模M/IOM/IOIORIOWM/IOM/IOMRMW式和最小模式时分别可用怎样的电路得到?请画出示意图。答:1.最小模式(以8086为例):2.最大模式:用8288总线控制器来实现。2.11CPU启动时,有哪些特征?如何寻找课后答案网8086/8088系统的启动程序?答:1.CPU启动时,有以下特征:①内部寄存器等置为初值;②禁止中断(可屏蔽中断www.hackshp.cn);③从FFFF0H开始执行程序;④三态总线处于高阻状态。2.8086/8088系统的启动程序从FFFF0H单元开始的无条件转移指令转入执行。2.12CPU在8086的微机系统中,为什么常用AD0作为低8位数据的选通信号?答:因为每当CPU和偶地址单元或偶地址端口交换数据时,在T1状态,AD0引腿传送的地址信号必定为低电平。而CPU的传输特性决定了只要是和偶地址单元或偶地址端口交换数据,则CPU必定通过总线低8位即AD7~AD0传输数据。可见AD0可以用来作为接于数据总线低8位上的8位外设接口芯片的选通信号。2.138086和8088在最大模式或最小模式时,引腿信号分别有什么不同?第5页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:在此两种模式中,只有第24~31腿的信号不同。引腿号2425262728293031最小模式信INTAALEDENWRHLDAHOLDDT/RM/IO号最大模式信QS1QS0S0S1S2LOCKRQ/GT1RQ/GT0号另外8088的第34腿在最大模式时为高电平,最小模式时为SS0状态信号。8088的第28腿在最小模式时为M/IO信号。2.148086和8088是怎样解决地址线和数据线的复用问题的?ALE信号何时处于有效电平?答:1.在总线周期的T1状态,复用总线用来输出要访问的存储器或I/O端口的地址给地址锁存器8282(3片)锁存;在其他状态为传送数据或作传送准备。地址锁存器8282在收到CPU发出的地址锁存允许信号ALE后,锁存地址。2.ALE信号在每个总线周期的T1状态为有效高电平。2.15BHE信号和A0信号是通过怎样的组合解决存储器和外设端口的读/写的?这种组合决定了8086系统中存储器偶地址体及奇地址体之间应该用什么信号来区分?怎样区分?答:1.组合情况如下:BHEA0操作所用的数据引腿00课后答案网从偶地址开始读/写一个字AD15~AD010从偶地址单元或端口读/写一个字节AD7~AD001从奇地址单元或端口读/写一个字节AD15~AD801www.hackshp.cn从奇地址开始读/写一个字(在第一个总线周AD15~AD810期,将低8位数送AD15~AD8,在第二个总线AD7~AD0周期,将高8位数送AD7~AD0)2.用A0信号来区分偶地址体和奇地址体。3.当A0=0时选中偶地址体,A0=1时选中奇地址体。2.16RESET信号来到后,CPU的状态有哪些特点?答:复位信号来到后,CPU便结束当前操作,并对处理器标志寄存器FR、IP、DS、SS、ES、其他寄存器及指令队列清0,而将CS设置为FFFFH。当复位信号变为低电平后,CPU从FFFF0H单元开始执行程序。第6页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)2.17在中断响应过程中,8086往8259A发的两个INTA信号分别起什么作用?答:第一个负脉冲通知外部设备的接口,它发出的中断请求已经得到允许;外设接口收到第二个负脉冲后,往数据总线上放中断类型码,从而CPU得到了有关此中断请求的详尽信息。2.18总线保持过程是怎样产生和结束的?画出时序图。答:1.当系统中CPU之外的另一个主模块要求占用总线时,通过HOLD引腿向CPU发一个高电平的请求信号。如果CPU此时允许让出总线,就在当前总线周期完成时,于T4状态从HLDA引腿发出一个应答信号,对刚才的HOLD请求做出响应。同时,CPU使地址/数据总线和控制状态线处于浮空状态。总线请求部件收到HLDA信号后,就获得了总线控制权,在此后一段时间,HOLD和HLDA都保持高电平。在总线占有部件用完总线之后,会把HOLD信号变为低电平,表示现在放弃对总线的占有。8086/8088收到低电平的HOLD信号后,也将HLDA变为低电平,这样,CPU又获得了地址/数据总线和控制状态线的占有权。T4/TI采样CLKHOLD采样HLDA三态引腿高阻课后答案网2.时序图为:2.198086系统在最小模式时应该怎样配置?请画出这种配置并标出主要信号的连接关系。答:1.8086系统在最小模式时的配置是:www.hackshp.cn8086CPU一片,8284A时钟发生器一片,8282地址锁存器三片,8286总线收发器二片。2.连接关系为:RESET8284AREADY8282CLKRESET(3片)BHEREADYALESTB地址总线BHEA19~A16AD15~AD08286(2片)第7页共89页OE数据总线T控制总线DEN 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)2.20时钟发生器的功能是什么?画出它的线路图。答:1.时钟发生器的功能是:提供频率恒定占空比符合标准的时钟信号,对准备好(READY)和复位(RESET)信号进行同步。2.线路图见书21页图2.7所示。2.218086在最大模式下应当怎样配置?最大模式时为什么一定要用总线控制器?总线控制器的输入信号是什么?输出信号是什么?答:1.8086在最大模式下的配置是:8086CPU一片,8284A时钟发生器一片,8282地址锁存器三片,8286总线收发器二片,8288总线控制器一片,8259A中断优先级管理部件一片。2.因为在最大模式下,需要用外加电路来对课后答案网CPU发出的控制信号进行变换和组合,以得到对存储器和I/O端口的读/写信号和对锁存器8282及总线收发器8286的控制信号。8288总线控制器就是完成上述这些功能的专用芯片。所以必须用总线控制器。3.总线控制器的输入信号是:来自www.hackshp.cnCPU的S2、S1、S0状态信息,时钟CLK信号,及决定本身工作方式的信号IOB、AEN、CEN。4.总线控制器的输出信号是:用来作为CPU进行中断响应的信号INTA,两组读/写控制信号MRDC、MWTC、IORC、IOWC,两个提前的写控制信号AMWC、AIOWC,送给地址锁存器的信号ALE,送给数据收发器的信号DEN和DT/R。2.22在编写程序时,为什么通常总要用开放中断指令来设置中断允许标志?答:因为在复位时,标志寄存器FR被清0,则IF=0,禁止从INTR进入的可屏蔽中断,所以必须在编写程序时,用指令来设置中断允许标志。2.23T1状态下,数据/地址复用总线上是什么信息?用哪个信号将此信息锁存起来?数据信息是第8页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)在什么时候给出的?用时序图表示出来。答:1.T1状态下,数据/地址复用总线上是地址信息。2.用ALE信号的下降沿将此地址信息锁存在三片8282中。3.数据信息的给出时间分两种:①总线读周期时,数据信息在T3、TW、T4中间给出;②总线写周期时,数据信息在T2、T3、TW、T4中间给出。4.时序图如下:T1T2T3TWT4CLKA19/S6~A16/S3AD15~AD0地址状态输出AD15~AD0地址数据输出ALEBHE/S7地址数据输入BHE输出2.24画出8086最小模式时的读周期时序。课后答案网答:见书27页图2.11所示。2.258086最多可有多少个中断?按照产生中断的方法分为哪两大类?www.hackshp.cn答:1.8086最多可有256个中断。2.按照产生中断的方法分为硬件中断和软件中断两大类。2.26非屏蔽中断有什么特点?可屏蔽中断有什么特点?分别用在什么场合?答:1.非屏蔽中断的特点有:中断请求从NMI引腿进入,不受中断允许标志IF的影响。非屏蔽中断只有一个,其中断类型码为2。2.可屏蔽中断的特点有:中断请求从INTR引腿进入,只有在IF=1时CPU才响应该中断。可屏蔽中断有若干个,其中断类型码可以是5~255。3.非屏蔽中断用来处理系统的重大故障,如掉电等。可屏蔽中断用在一般外部设备申请的中断中。第9页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)2.27什么叫中断向量?它放在那里?对应于1CH的中断向量存放在哪里?如果1CH的中断处理子程序从5110H:2030H开始,则中断向量应怎样存放?答:1.中断处理子程序的入口地址就是中断向量。2.中断向量放在0段的0~3FFH区域的中断向量表中。3.对应于类型号为1CH的中断向量应放在00070~00073H的4个单元中。4.若1CH的中断向量为5110H:2030H,则中断向量的存放方法为:00070H存放30H,00071H存放20H(IP);00072H存放10H,00073H存放51H(CS)。2.28从8086/8088的中断向量表中可以看到,如果一个用户想定义某个中断,应该选择在什么范围?答:应该选择在中断类型码为32(20H)~255(FFH)范围。2.29非屏蔽中断处理程序的入口地址怎样寻找?答:CPU在响应NMI引腿的中断请求时,CPU并不需要从中断类型码计算中断向量的地址,而是直接从中断向量表中读取00008~0000BH这4个单元对应于中断类型2的中断向量就行了。CPU将00008H、00009H两个单元的内容装入IP,而将0000AH、0000BH两个单元的内容装入CS,于是就转入了对非屏蔽中断处理程序的执行。2.30叙述可屏蔽中断的响应过程,一个可屏蔽中断或者非屏蔽中断响应后,堆栈顶部四个单元中为什么内容?答:首先在CPU的INTR引腿上有可屏蔽中断请求输入,且IF=1。在当前指令执行完后,CPU发两个INTA课后答案网中断响应负脉冲,外设接到第二个负脉冲后,立即往数据线上给CPU送来中断类型码。然后CPU取中断类型码,将标志FR推入堆栈,清除IF和TF,再将CS和IP推入堆栈来保护断点,进入中断处理子程序并执行,最后弹出IP和CS及标志而中断返回。中断响应后,堆栈顶部四个单元的内容分别是:IPL、IPH、CSL、CSH。www.hackshp.cn2.31一个可屏蔽中断请求来到时,通常只要中断允许标志为1,便可在执行完当前指令后响应,在哪些情况下有例外?答:1.正好遇到CPU执行封锁指令时,必须等下一条指令执行完后才响应中断。2.正好执行往段寄存器传送数据的指令,必须等下一条指令执行完后才响应中断。3.执行WAIT或串操作指令时,可在指令执行中响应中断。2.32在对堆栈指针进行修改时,要特别注意什么问题?为什么?答:1.必须先修改堆栈段寄存器SS的值,接着修改堆栈指针SP的值。2.因为,CPU在修改段寄存器值时不响应中断,待下一条指令执行后才响应中断。这样对SS、SP的修改是一个完整的过程。否则先修改SP后修改SS则可能中断响应第10页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)而分开修改,导致堆栈指针的错误,因此CS、IP、FR进入错误的堆栈区域而破坏该单元的数据或程序。2.33在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?有些寄存器即使在中断处理子程序中并没有用到也需要保护,这又是为什么(联系串操作指令执行时遇到中断这种情况来回答)?答:1.因为中断处理子程序运行时需要使用CPU内部的寄存器,这些寄存器的值发生了改变。因此若不加保护在返回原程序时就修改了断点处的现场,而使程序不能正常运行。2.因为串操作指令允许在执行过程中进入中断,若与串操作有关的寄存器未保护好,中断返回时串操作指令就不能正常继续运行。而且还有隐含寻址问题。2.34一个可屏蔽中断响应时,CPU要执行哪些读/写周期?对一个软件中断又如何?答:1.对可屏蔽中断响应,CPU要执行的读/写周期如下:①执行两个中断响应总线周期。并取得中断类型码。②执行一个总线写周期。标志寄存器FR值入栈。③执行一个总线写周期。CS值入栈。④执行一个总线写周期。IP值入栈。⑤执行一个总线读周期。读取中断处理子程序入口地址的偏移量→IP。⑥执行一个总线读周期。读取中断处理子程序入口地址的段地址→CS。2.若是一个软件中断,则跳过上述第①步,而执行②~⑥步。课后答案网2.35中断处理子程序在结构上一般是怎样一种模式?答:①保护中断时的现场,即保护CPU各寄存器的值。②一般应置IF=1来开放中断,以允许级别较高的中断请求进入。③中断处理的具体内容。www.hackshp.cn④恢复中断时的现场。⑤中断返回指令。2.36软件中断有哪些特点?在中断处理子程序和主程序的关系上,软件中断和硬件中断有什么不同之处?答:1.软件中断有如下特点:①用一条中断指令进入中断处理子程序,并且,中断类型码由指令提供。②进入中断时,不需要执行中断响应总线周期。③不受中断允许标志IF的影响。④软件中断的优先级最高。第11页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)⑤软件中断没有随机性。2.软件中断允许在主程序和中断处理子程序之间传递数据。而硬件中断由于是随机的,所以不能传递数据。2.37系统中有多个总线模块时,在最大模式和最小模式下分别用什么方式来传递总线控制权?答:1.8086/8088在最小模式下用总线控制联络信号(HOLD和HLDA)来传递总线控制权。2.8086/8088在最大模式下用总线请求/总线允许信号及释放信号RQ/GT0和RQ/GT1来传递总线控制权。2.388086存储空间最大为多少?怎样用16位寄存器实现对20位地址的寻址?答:1.8086存储空间最大为220=1MB。2.采用分段的方法实现16位寄存器实现对20位地址的寻址。物理地址=段基址×10H+偏移地址2.39IBMPC/XT系统中,哪个区域为显示缓冲区?哪个区域用来存放中断向量?在FFFF0H到FFFFFH单元中存放什么内容?答:1.B0000H~B0F9FH约4KB为单色显示器的显示缓冲区;B8000~BBF3FH约16KB为彩色显示器的显示缓冲区。2.00000H~003FFH共1KB区域用来存放中断向量。3.在FFFF0H到FFFFFH单元中存放一条无条件转移指令,转到系统的初始化程序。第三章课后答案网808688086086的寻址方式和指令系统3.18086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快?3.2直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段寄存器指出段地www.hackshp.cn址,指令中应如何表示?3.3在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定?3.4用寄存器间接寻址方式时,BX,BP,SI,DI分别针对什么情况来使用?这四个寄存器组合间接寻址时,地址是怎样计算的?举例进行说明。3.5设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作:MOVBYTEPTR[BP],2000MOVWORDPTR[BX],20003.6使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注意什么问题?第12页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)3.7下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。XCHGCS,AXMOV[BX],[1000]XCHGBX,IPPUSHCSPOPCSINBX,DXMOVBYTE[BX],1000MOVCS,[1000];(以上由杨钧钧输入)3.88086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?[解答]凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。3.9以下是格雷码的编码表0——00001——00012——00113——00104——01105——01116——01017——01008——11009——1101请用换码指令和其他指令设计一个程序段,实现格雷码往ASCII的转换。[解答]3.10用加法指令设计一个简单程序,实现两个16位十进制数的加法,结果放在被加数单元。[解答]3.11为什么用增量指令或减量指令设计程序时,在这类指令后面不用进位标志课后答案网CF作为判断依据?[解答]3.12用乘法指令时,特别要注意先判断用有符号数乘法指令还是用无符号数乘法指令,这是为什么?www.hackshp.cn[解答]用乘法指令时,特别要注意先判断用有符号数乘法指令还是用无符号数乘法指令,是因为在执行乘法运算时,要想使无符号数相乘得到正确的结果,有符号数相乘时,就得不到正确的结果;要想使有符号数相乘得到正确的结果,无符号数相乘时,就得不到正确的结果。3.13字节扩展指令和字扩展指令用在什么场合?举例说明。[解答]遇到两个字节相除时,要预先执行CBW指令,以便产生一个双倍长度的被除数。否则就不能正确的执行除法操作。CWD同理。例如:CBWMOVAL,a;CWDMOVAX,X;MOVCL,b;MOVCX,Y;CBWAL;CWDAX;DIVAX,CL;DIVAX,CX;3.14什么叫BCD码?什么叫组合的BCD码?什么叫非组合的BCD码?8086汇编语言在对BCD码进行加、减、乘、除运算时,采用什么方法?第13页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)[解答]在计算机中,可用4位二进制码表示一个十进制码,这种代码叫BCD码;用一个字节表示2位BCD码就是BCD码;计算机对BCD码进行加、减、乘、除运算,通常采用两种办法:一种是在指令系统中设置一套转专用于BCD码的指令;另一种方法是利用对普通二进制数的运算指令算出结果,然后用专门的指令对结果进行调整,或者反过来,先对数据进行调整,再用二进制数指令进行运算。(以上7题由陈军解答)3.15用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?[解答]在BCD码中,只允许0?/FONT>9这10个数字出现,但有时候的运算结果会超过此范围,因此要进行十进制调整。进行加、件或乘法运算时,调整指令必须紧跟在算术指令后面,在进行除法运算时,调整指令放在除法指令之前。3.16普通移位指令(带CF的和不带CF的两类)在执行操作时,有什么差别?在编制乘法程序时,为什么常用移位指令来代替乘除法指令?试编写一个程序段,实现将BX中的数除以10,结果仍放在BX中。[解答]带CF和不带CF的普通移位指令的差异:前者用于算术运算,后者用于逻辑运算。程序段:MOVCL,0AHMOVAX,BXIDIVCLMOVBX,AX3.17串操作指令使用时特别要注意和SI,DI这两个寄存器及方向标志DF密切相关。请具体就指令MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、STOSB/STOSW列表说明和SI、DI及DF的关系。课后答案网[解答]SIwww.hackshp.cnDIDFMOVSB/指出源地址指出目的地址不带REP重复前缀时,DF=0,每传送一次,SI、DI加1或加2,DF=1,SI、DI则减1或减2MOVSWCMPSB/存放源字符存放目的字符DF=0,每次比较后,SI、DI加1或加2,CX减1,DF=1,串SI、DI减1或减2,CX减1CMPSW串首地址首地址SCASB/无指出字符串首无址SCASW偏移量第14页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)LODSB/作为地址指存放处理结果DF=1时,地址作增量修改,DF=0时,地址作减量修改针LODSWSTOSB/无存放目的地址无STOSW3.18用串操作指令设计实现以下功能的程序段:首先将100H个数从2170H处搬到1000H处,然后,从中检索相等于AL中字符的单元,并将此单元值换成空格符。[解答]BUFF1EQU,1000HBUFF2EQU,2170HSTART:MOVSI,OFFSETBUFF2LEADI,BUFF1MOVCX,100HCYCLE:MOVAL,[SI]MOV[DI],ALINCSIINCDI课后答案网LOOPCYCLEANOTHER:MOVDI,OFFSETBUFF1MOVCX,100www.hackshp.cnCLDAGE:SCASBDECCXJZFINJNZAGEJMPOVER第15页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)FIN:MOV[DI],20HCMPCX,0JNZAGEOVER:RET3.19在使用条件转移指令时,特别要注意它们均为相对转移指令,请解释“相对转移”的含义。如果要往较远的地方进行条件转移,那么,程序中应该怎样设置?[解答]只能在从本指令为中心的-128到+127字节范围内转移的称为相对转移。如果要往较远的地方进行条件转移时,可以先用条件转移指令转到附近一个单元,然后,从此单元起放一条无条件转移指令,再通过这条无条件转移指令转到较远的目的地址。3.20带参数的返回指令用在什么场合?设栈顶地址为3000H,当执行RET0006后,SP的值为多少?[解答]带参数的返回指令可用在这样的情况:主程序为某个子程序提供一定的参数或者参数地址先送到堆栈中,通过堆栈传递给子程序。当栈顶指针SP=3000H,执行RET0006时,弹出3000H和3001H处的返回地址,腾出3002H?/FONT>3007H的空间,所以SP=3008H。(以上6题由张丽解答)3.21用循环控制指令设计程序段,从60H个元素中寻找一个最大值,结果放在AL中。[答案]MOVSI,OFFSETDATA1;将数据起始地址送SIMOVCX,5FH;有60H-1次循环MOVAL,[SI];将第一个元素放AL中COMPARE:INCSICMPAL,[SI]课后答案网JLXCHMAXJMPNEXTXCHMAX:MOVAL,[SI]NEXT:LOOPCOMPAREwww.hackshp.cn3.22中断指令执行时,堆栈的内容有什么变化?中断处理子程序的人口地址是怎样得到的?[答案]中断指令执行时,堆栈内容变化如下:标志寄存器被推入堆栈,且SP减2,然后CPU将主程序的下一条指令地址即断点地址的段值和偏移量推入堆栈,且SP减4。某中断处理子程序的入口地址即中断向量,由该中断类型号的4倍为内存地址,在该地址处的4个字节内容即该中断向量。3.23中断返回指令IRET和普通子程序返回指令RET在执行时,具体操作内容什么不同?[答案]IRET须弹出堆栈中标志寄存器的值,而RET则不需要。3.24断点中断是指怎样一种中断?在程序调试中有什么作用?断点中断指令有什么特点?设置断点过程对应了一种什么操作?这种操作会产生什么运行结果?第16页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)[答案]断点中断即中断类型3,一般该中断处理程序进行程序调试,主要功能是显示一些寄存器的值,并给出一些重要的信息。在程序调试中,断点中断就是从一个较长的程序中分离出一个较短的存在问题的程序段。断点中断的特点是指令占一个字节。设置断点过程对应int3替换那条指令,在中断处理程序中再恢复该被替换的指令,并修改堆栈中的断点地址为中断处的地址而不是下一条指令地址。这种操作使断点中断不会影响程序的功能。3.25HLT指令用在什么场合?如CPU在执行HLT指令时遇到硬件中断并返回后,以下应执行哪条指令?[答案]HLT用在使CPU处于暂停状态而等待硬件中断的场合。在执行HLT指令遇到硬件中断并返回后将执行HLT后面的一条指令。3.26总线封锁指令用在什么场合?以飞机定票系统为例说明总线封锁指令的作用(设飞机定票系统为一个多处理器系统,每个处理器都是平等的)。[答案]总线封锁指令用在多个处理器争用同一资源或设备的场合。在飞机票系统中,当一个处理器受理业务时,便用LOCK封锁总线,使其它处理器不能访问总线,避免引起冲突。(以上6题由刘江桥解答)3.27设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么?[答案]当前栈顶的地址2010H*16+FE00H=2FF00H;执行PUSHBX指令后,堆栈地址指针SP减2,则栈顶地址为2FEEDH;栈顶2个字节的内容为57H、34H。3.28在DS段中有一个从TABLE开始的由160个字符组成的链表,设计一个程序,实现对此表进行搜索,找到第一个非0元素后,将此单元和下一单元清课后答案网0。(以上由王龙输入)[答案]MOVCX,SEGTABLEMOVDS,www.hackshp.cnCX;将段地址送DSMOVSI,OFFSETTABLE;表偏移量送SIMOVCX,160;字节数XORAL,ALNEXT:CMPAL,[SI]JNEEXIT1INCSILOOPNEXT第17页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)EXIT1:MOV[SI],ALINCSIMOV[SI],AL3.29下面的程序段将ASCII码的空格字符填满100个字节的字符表。阅读这一程序,画出流程,并说明使用CLD指令和REPSTOSB指令的作用,再指出REPSTOSB指令执行时和那几个寄存器的设置有关?MOVCX,SEGTABLE;TABLE为字节表表头MOVES,CXMOVDI,OFFSETTABLE;DI指向字节表MOVAL,""MOVCX,64H;字节数CALLFILLM;调用数子程序......FILLM:JCXZEXIT;CX为0则退出PUSHDI;保存寄存器PUSHCXCLDREPSTOSB;方向标志清零POPCX;重复填数POPDIEXIT:RET[答案]CLD指令作用:方向标志清0;REPSTOSB指令作用:重复CX次将AL中的字节填入[ES:DI]为起始的表内,DI增量、减量根据课后答案网DF确定:DF=0,DI每次增量;DF=1,DI每次减量。STOSB指令执时,与AX、ES、DI寄存器和Flag的DF位设置有关。流程图如右:3.30下程序将一个存储块的内容复制到另一个存储快,进入存储段时,SI中为源区起始地址的偏移量,DI中为目的区起始地址的偏移量,CXwww.hackshp.cn中为复制的字节数。阅读程序并说明具体的REPMOCSB指令使用与那些寄存器有关?PUSHDI;保存寄存器PUSHSIPUSHCXCMPDI,SI;看源区和目的区的地址哪个高JBELOWER;如目的区地址底,则转移STD;如目的区地址高,则设方向标志为1ADDSI,CX;从最后一个字节开始复制DECSI;调整源区地址ADDDI,CXDECDI;调整目的区地址JMPMOVEMLOWER:CLD;从第一个字节开始复制第18页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVEM:REPMOVSBPOPCXPOPSIPOPDIRET[答案]REPMOVSB的作用是重复CX次将[DS:SI]中字节传送到[ES:DI]中。SI、DI加或减1由DF确定,DF=0,加。REP使CX减1,到0后结束传送。所以REPMOVSB指令与CX、SI、DI、ES、DS寄存器和Flag的DF位设置有关。3.31下面的程序实现对两个存储区中的字进行比较。如找到一对不同的字,则退出,此时,ZF为0,DI指向此字;如两个存储区冲所有的字一一象同,则退出程序时,CX中植为0,ZF为1。阅读这一程序段,并仿此设计一个比较字节块的程序段。MATT:MOVSI,OFFSETSOURCE;源区首址MOVDI,OFFSETTARGET;目的区首址MOVCX,NUMBERJCXZEXIT;如CX为0,则结束PUSHCX;保存有关寄存器PUSHSIPUSHDICLD;清方向标志REPECMPSWJZMATCH;比较PUSHF;ZF为1,则转移SUBDI,2;ZF为0,则DI指向次字POPFJMPEXIT课后答案网;推出MATCH:POPDI;恢复寄存器POPSIPOPCXEXIT:RETwww.hackshp.cn[答案]将上面程序中的“REPECMPSW改为REPECMPSB”、“SUBDI,2改为DECDI”即可,其余不变。3.32下面的程序实现在TABLE为起始地址的100个字符长度的表中检索“$"字符。分析程序,然后说明REPNESCASB指令的具体执行过程。START:MOVCX,SEGTABLE;表段地址送ESMOVES,CXMOVDI,OFFSETTABLE;表偏移量送DIMOVAL,"$";检索的关键字MOVCX,64H;检索的字节数PUSHDI;保存起始地址CLD;清除方向标志REPNESCASB;检索第19页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)JNZNFOUN;如未找到,则转移SUBDI,1;找到,则指向次字符JMPEXITNFOUN:POPDI;恢复起始地址EXIT:RET;(以上由1007孙成长输入)[答案]REPNESCASB指令的作用将AL中的字节与[ES:DI]中的字节比较,不相等则DI加或减1后继续比较。这样可以在[ES:DI]起始的内存中检索到字节AL,一旦找到则操作结束,一直未找到则重复CX次。(以上6题由张娅琴解答)3.33下面的程序实现两个32位不带符号的想乘,被乘数在DX和AX寄辰器中,乘数在CX和BX寄辰器中,最后的64位乘积在DX,CX,BX,AX中。图3-33说明乘法过程。读懂程序段和附图,并自己设计一个课后答案网程序,实现一个16位数和一个32www.hackshp.cn位无符号数相乘。STAT:JMPMUL64HI0DW?LO0DW?HI1DW?LO1DW?HI2DW?LO2DW?HI3DW?LO3DW?HI4DW?LO4DW?MUL64:MOVHI0,DX;保存被乘数第20页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVLO0,AXMULBX;得部分乘积1MOVHI1,DX;保存部分乘积1MOVLO1,AXMOVAX,HI0;得部分乘积2MULBXMOVHI2,DX;保存部分乘积2MOVLO2,AXMOVAX,LO0;得部分乘积3MULCXMOVHI3,DX;保存部分乘积3MOVLO3,AXMOVAX,HI0;得部分乘积4MULCXMOVHI4,DX;保存部分乘积4MOVLO4,AXMOVAX,LO1;乘积的低16位在AX中MOVBX,HI1;乘积的次低16位在BX中ADDBX,LO2ADCHI2,0ADDBX,LO3MOVCX,HI2;乘积的次高16位在CX中ADCHI4,0ADDCX,LO4MOVDX,HI4;乘积的高16位在DX中ADCDX,0RET课后答案网[答案];(DX、AX)*CX->DX、CX、AX,为无符号数START:JMPMUL48www.hackshp.cnMUL48:MOVBX,DX;先保存DXMULCX;AX*CX->DX、AXMOVSI,AX;将部分积结果保存到DI、SIMOVDI,DXMOVAX,BXMULCX;DX*CX->DX、AXMOVCX,DI第21页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)ADDCX,AX;得到中间16个字节MOVAX,SI;低16个字节ADCDX,0;高16个字节RET3.34下面的程序实现两个32位带符号数的乘法,其中调用了题3.33中的非符号数相乘的程序MUL64,结果放在DX、CX、BX、AX四个寄存器中,进入程序时,DX、AX中为被乘数,CX、BX中为乘数。读懂程序后再设计一个16位带符号数和32位带符号数相乘程序。MULS64:MOV[1000],0;1000单元作为负数标志CMPDX,0;乘数为负数吗?JNSCHKK;否,则转CHKKNOTAX;是,则取补码NOTDXADDAX,1ADCDX,0NOT[1000];负数标志置1CHKK:CMPCX,0;乘数为负数吗?JNSGOMUL;否,则转GOMULNOTBX;是,则取补码NOTCXADDBX,1ADCCX,0NOT[1000];将负数标志取反(以上由魏运龙输入);--------------------------------------------------------课后答案网GONUL:CALLMUL64;调用非符号数乘法程序CMP[1000],0;结果为正数吗?JZEXIIT;是正数,则转移NOTAX;是负数,则取补码NOTBXwww.hackshp.cnNOTCXNOTDXADDAX,1ADCBX,0ADCCX,0ADCDX,0EXIIT:RET[答案];(DX、AX)*CX->DX、CX、AX,为有符号数MULS48:MOV[1000],0;1000单元作为负数标志CMPDX,0;乘数为负数吗?JNSCHKK;否,则转CHKK第22页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)NOTAX;是,则取补码NOTDXADDAX,1ADCDX,0NOT[1000];负数标志置1CHKK:CMPCX,0;乘数为负数吗?JNSGOMUL;否,则转GOMULNOTCX;是,则取补码ADDCX,1NOT[1000];将负数标志取反GONUL:CALLMUL48;调用32位*16位无符号数乘法程序CMP[1000],0;结果为正数吗?JZEXIT0;是正数,则转移NOTAX;是负数,则取补码NOTCXNOTDXADDAX,1ADCCX,0ADCDX,0EXIT0:RET3.35下面的一个实现16位非组合BCD码相加的程序段,阅读这一程序段后再设计一个实现16位非组合BCD码减法的程序。ANBCD:MOVCH,AH;进入程序段时,AX中为第二个操作数ADDAL,BL;BX中为被加数,实现低8位相乘AAAXCHGAL,CH课后答案网ADCAL,BH;实现高8位相加AAAMOVAH,AL;和保存在AX中MOVAL,CHRETwww.hackshp.cn[答案]SUBCD:MOVCH,AH;AX-BX->AX,为非组合BCD码SUBAL,BLAASXCHGAL,CHSBBAL,BHAAS第23页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVAH,ALMOVAL,CHRET3.36下面的程序实现两个16位组合BCD码相减,进入程序时,BX中为减数,AX中为被减数,程序执行后,结果在AX中。请仿照这一程序段设计两个16位组合BCD码相加的程序。STASUB:MOVCH,AH;保存高8位SUBAL,BL;低8位相减DAS;十进制调整XCHGAL,CHSBBAL,BH;高8位相减DASMOVAH,AL;结果在AX中MOVAL,CHRET[答案]STAADD:MOVCH,AH;AX+BX->AX,为组合BCD码ADDAL,BLDAAXCHGAL,CH课后答案网ADCAL,BHDAAMOVAH,ALwww.hackshp.cnMOVAL,CHRET3.37下面是一个实现组合的32位BCD码除以组合的16位BCD码的程序,结果得到16位组合的BCD码的商和16位的BCD码余数。进入程序时,被除数在DX.AX中,除数在BX中,程序执行后,商在AX中,余数在DX中,请为子程序TBCD加上详细注释,再分析整个程序,并画出详细流程图。DIBCD:PUSHAX;被除数低16位进堆栈MOVAX,BX;除数送AXCALLBCD2;将除数转化为二进制数MOVBX,AX;除数送回BXMOVAX,DX;将被除数高16位转换为二进制数CALLBCD2MOVCX,10000;被除数高16位乘10000第24页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MULCXMOVSI,AX;被除数高16位保存到SIPOPAXCALLBCD2;被除数低16位转换为二进制数ADDAX,SIADCDX,0;DX和AX中得到二进制被除树DIVBX;除法运算MOVCX,AX;商存入CXMOVAX,DX;余数存入AXCALLTWBCD;余数转换为BCD码MOVDX,AX;余数送DXMOVAX,CX;商转换为BCD码CALLTWBCDRETBCD2:MOVSI,AXSUVAX,AXCALLCONVER;转换最高一个BCD码(4位二进制)CALLCONVER;转换次高一个BCD码CALLCONVER;转换次低一个BCD码CALLCONVER;转换最低一个BCD码RETCONUER:MOVDI,0;清DIMOVCX,4;四次移位SHIF:SHLSI,1;左移一次RCLDI,1;左移的数位进入DILOOPSHIFMOVCX,10课后答案网;结果乘10MULCXADDAX,DI;加上新的数,结果在AX中RETTWBCD:CMPAX,9999;数据是否太大www.hackshp.cnJBETBCD;否,则转2BCDSTCJCEXIT;是,则退出(以上由?输入)-----------------------------------------------------TBCD:SUBDX,DX;DX清零MOVCS,1000;原数为1000DIVCXXCHGAX,DX;交换AX,DX的值MOVCL,4SHLDX,CL;左移位4次,将已转化好的BCD码放在DX中MOVCL,100;余数为100DIVCLADDDL,AL第25页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVCL,4SHLDX,CLXCHGAL,AH;剩余的余数继续作除运算SUBAH,AH;将AH置0DIVCLADDDL,ALMOVCL,4SHLDX,CLADDDL,AHMOVAX,DXEXIT:RET3.38以下程序将一个8位二进转换为2位BCD数字,进入程序时,AL中为二进制数,退出程序时,如CF为0,则AL中为BCD数字,如CF为1,则表示由于输入值超出范围故结果无效。阅读下面程序后,画出流程图,然后设计一个将组合的BCD码(2位)转换为8位二进制数的程序。[答案]流程图如右:START:CMPAL,99;是否超出范围?JBESTRATSTC;是,则转EXIT,并给CF置1JCEXITSTRAT:MOVCL,10;10作为除数XORAH,AHCBW;将AL中数扩展到AHDIVCL课后答案网;除法结果AL中为高位,AH中为低位MOVCL,4SHLAL,CL;左移4位ORAL,AH;合成BCD码在AL中EXIT:RETwww.hackshp.cn;(以上6题由张琼仙解答)3.39下面程序用XLAT指令将二进制数转换成16进制数,阅读下面程序,体会XLAT换码指令的用法,然后,设计一个查表程序,实现按学号查找学生姓名的功能。START:JMPBINASCASCIIDB"0123456789ABCDEF"BINASC:PUSHBXANDAL,0FH;清除AL中高4位LEABX,ASCII;BX指向ASCII表XLAT;转换为ASCII码第26页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)POPBXRET[解答]START:JMPBINASCASCIIDB"0123456789ABCDEF"BINASC:PUSHBXANDAL,0FH;清除AL中高4位LEABX,ASCII;BX指向ASCII表XLAT;转换为ASCII码POPBXRET答:BUFFDB32DB?DB32DUP(?)START:JMPINPUTNAMEDB"ZHAOQIANINPUT:MOVDX,OFFSETBUFFMOVAH,0AHINT21HMOVDX,AX;将输入的学号放入dx中PUSHDX;DX入栈保护JMPBINASCBINASC:POPDXMOVAX,DX;放入ax中PUSHBXLEABX,NAMEXLAT课后答案网;即(AX)←((BX)+(AX))名字取出放入ax中POPBXRET3.40下面的程序将两个字符串全并为一个字符串。在进入程序前,设第一个字符串的地址偏移量和字符串长度已分别放在DI和BX中,第二个字符串的地址偏移量和字符串长度则分别放在www.hackshp.cnSI和CX中。阅读下面程序并画出流程图,在此基础上,再设计一个将3个字符串全并为一个字符串的程序(设进入程序前第三个字符串的地址偏移量和字符串的长度分别在DX和AX中)。START:JCXZEXIT;如第二串长度为0,则退出CMPBX,0JEEEXIT;如第一串长度为0,则退出PUSHDI;保存第一串地址PUSHCXPUSHDIADDDI,BX;计算第一串末地址CMPSI,DI;第一串末地址是否超过第二串首地址?JAOKOK1;否,则转POPDIPUSHSI;保存第二串地址第27页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)ADDSI,CX;计算第二串地址CMPSI,DI;第二串末地址是否高于第一串首地址POPSIJBEOKOK2;否,则转SUBDI,DI;是,则使ZF为0,且退出JZEXEXOKOK1:POPDIOKOK2:CLD;连接两个字符串REPMOVSBMOVSI,DI;SI指向新串首址POPCXADDBX,CX;BX为新串长度EXEX:POPCXPOPDIEXIT:RET;(以上由王素芬输入)[解答]START:JCXZEXIT;如第二串长度为0,则退出CMPBX,0JEEEXIT;如第一串长度为0,则退出PUSHDI;保存第一串地址PUSHCXPUSHDIADDDI,BX;计算第一串末地址CMPSI,DI;第一串末地址是否超过第二串首地址?JAOKOK1;否,则转POPDIPUSHSI;保存第二串地址课后答案网ADDSI,CX;计算第二串地址CMPSI,DI;第二串末地址是否高于第一串首地址POPSIJBEOKOK2;否,则转SUBDI,DI;是,则使ZF为0,www.hackshp.cn且退出JZEXEXOKOK1:POPDIOKOK2:CLD;连接两个字符串REPMOVSBMOVSI,DI;SI指向新串首址POPCXADDBX,CX;BX为新串长度EXEX:POPCXPOPCIEXIT:RET;(以上由王素芬输入)答:START:JCXZEXIT;第28页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)JBXZEXIT;CMPAX,0;JEEEXIT;如果长度为0则退出PUSHDI;PUSHCX;PUSHDI;ADDDI,BX;CMPSI,DI;看一末地址是否高于二的首地址JAOKOK1;否,转POPDI;PUSHSI;ADDSI,CX;CMPSI,DI;POPSI;二末地址是否高于一首地址JBEOKOK3;否,转SUBDI,DI;是,zf为0,退出PUSHSI;PUSHAX;PUSHSI;ADDSI,CX;CMPDX,SI;二末地址是否高于三首地址JAOKOK2;否,转POPSI;PUSHDX;ADDDX,AX;CMPDX,SI;POPDX;三末地址是否高于二首地址课后答案网JBEOKOK4;否,转SUBSI,SI;是,zf为0,退出JZEXEX;OKOK1:POPDI;www.hackshp.cnOKOK2:POPSI;OKOK3:CLD连接一和二生成新一REPMOVSB;MOVSI,DI;POPCX;ADDBX,CX;OKOK4:CLD连接新一和三MOVAX,SI;POPDX;ADDBX,DX;bx为总长EXEX:POPAX;POPDX;EXIT:RET;第29页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)3.41下列程序将第二个字符串插入第一个字符串中的指定位置,为此要在插入点处将第一串的后面部分往后移动相当于第二串长度的空间,设进入程序时,第一串的地址偏移量和字符串长度分别在DI和BX中,第二串的地址偏移量和字符长度分别在SI和CX中,BP为插入点的偏移量。阅读程序并画出流程,再说明ZF在程序中的作用,并对插入过程作详细注释。START:JMPINSERT;[解答]SIZE2DW?;保存CX用OFF1DW?;保存DI用INSERT:JCXZQUIT;第二串为空串,则退出CMPBX,0JEQUIT;第一串为空串,则退出MOVSIZE2,CX;保存CXMOVOFF1,DI;保存DIADDDI,BXCMPSI,DI;第二串是否已在第一串中?JAEOKOK;否,则转PUSHSIADDSI,CXCMPSI,OFF1;第一串是否覆盖第二串?POPSIJBEOKOK;否,则转SUBDI,DI;使ZF为0JZEXITOKOK:STD;完成插入ZF的作用是控制程序的结束。PUSHDI;DI入栈保存MOVSI,DI课后答案网;SI指向一的末地址ADDDI,CX;第一串空出第二串的位置MOVCX,SISUBCX,BPwww.hackshp.cnINCCX;从插入点以后的字符开始后移REPMOVSBCLDPOPSI;SI指向第二串字符MOVCX,SIZE2;CX为第二串的长度MOVDI,BP;DI指向插入点REPMOVSBMOVSI,BP;SI指向新址ADDBX,SIZE2;BX为新串长EXIT:MOVDI,OFF1;恢复DI第30页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVCX,SIZE2;恢复CXQUIT:RET;(以上由康延魁输入)(以上3题由许振华解答)第四章存储器和高速缓存技术4.1计算机的内存有什么特点?内存由哪两部分组成?外存一般指哪些设备?外存有什么特点?答:1.内存可被CPU直接访问,内存的存取速度快,内存的空间大小受到地址总线位数的限制。2.内存由ROM和RAM两部分组成。3.外存一般指软盘、硬盘、磁带机上的磁带及光盘。4.外存的特点是大容量,所存信息即可修改,又可长期保存。但外存速度慢,要配置专用设备。4.2用存储器件组成内存时,为什么总是采用矩阵形式?请用一个具体例子进行说明。答:1.为了简化选择内存内部单元的地址译码电路及减少译码线数量。2.例如,要组成1K字节的内存,若不用矩阵组织这些单元,而是将它们一字排开,就要1024条译码线才能实现对这些单元的寻址。译码电路也因此而很复杂。若用32×32来实现排列,就只要32条行选择线和32条列选择线就可以了。因此其译码电路也将变得较为简单。4.3为了节省存储器的地址译码电路,一般采用哪些方法?课后答案网答:①存储器件按矩阵排列;②内存按模块结构设计;③模块内再进行分组处理。www.hackshp.cn4.4在选择存储器件时,最重要的考虑因素是什么?此外还应考虑哪些因素?答:1.最重要的考虑因素是:易失性、只读性、位容量和速度。2.此外还应考虑:功耗、可靠性和价格等因素。4.5什么叫静态RAM?静态RAM有什么特点?答:1.在电源不断电的情况下,信息一旦写入后不会丢失的RAM就叫静态RAM。2.静态RAM的特点有:不需刷新,因此简化了外部电路;但位容量较类似方法设计的动态RAM少,且功耗较大。4.6静态RAM芯片上为什么往往只有写信号而没有读信号?什么情况下可以从芯片读得数据?第31页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:1.因为在存储器中,当允许信号有效之后,一定是进行读/写操作,非写即读。因此,只用写信号WE就可以即控制写操作,又控制读操作。在写操作时,写脉冲发生器送来一个负脉冲作为写入信号;在读操作时,写脉冲发生器不产生负脉冲,而是使WE端处于高电平,此高电平就用来作为读出信号。2.当芯片允许信号CE=0及写信号WE=1时,可以从芯片上读得数据。4.7在对静态存储器进行读/写时,地址信号要分为几个部分?分别产生什么信号?答:1.地址信号分为三个部分。如:A19~A14,A13~A12,A11~A0。2.例中A19~A14用来作为模块选择信号,地址译码器判断A19~A14给出的模块选择信号和本模块的约定信号是否匹配,如匹配,则再根据MRDC或MWTC产生内部的模块选择信号;A13~A12产生4个矩阵的芯片允许信号;A11~A0则作为矩阵内部的行地址和列地址。4.8动态RAM工作时有什么特点?和静态RAM比较,动态RAM有什么长处?有什么不足之处?动态RAM一般用在什么场合?答:1.动态RAM工作时需要对其存储的信息定时(约2ms)刷新一次。因此需要刷新控制电路来支持。2.动态RAM的优点(长处)为:动态RAM的位密度高;动态RAM的功耗较低;动态RAM的价格低廉,适合于大容量使用。3.动态RAM的缺点(不足之处)为:要配置刷新逻辑电路;在刷新周期中,内存模块不能启动读周期或写周期。课后答案网4.动态RAM一般用在大容量、低功耗场合。4.9动态RAM为什么要进行刷新?刷新过程和读操作比较有什么差别?答:1.因为动态RAMwww.hackshp.cn是利用电容的存储作用来保存信息的,但电容由于放电或泄漏,电荷保存时间较短(约2ms),若不及时补充电荷会使存放的数据丢失,因此需定时刷新以补充所需要的电荷。2.刷新过程是由刷新逻辑电路定时完成的,且每次对所有模块的一行同时刷新,数据不输出,数据总线处于高阻状态。读过程是随机的,每次选中一个存储单元(8位),且数据输出到数据总线上。4.10动态RAM控制器完成什么功能?Intel8203从功能上分为哪两部分?叙述这两部分的工作原理。答:1.动态RAM控制器要完成的功能有:刷新定时器产生刷新周期并提供各种时序信号,并对CPU的读/写操作及刷新操作进行仲裁;刷新地址计数器提供刷新用的行地址,第32页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)并通过多路转换器进行地址切换。2.Intel8203从功能上分为:地址处理部分和时序处理部分两个。3.地址处理部分用来处理动态RAM正常读/写时的地址信号(正常的行/列地址合用一组地址线的区分)和刷新过程中的地址信号(区分正常的行地址及刷新周期的行地址)。时序处理部分通过一个基准时钟来产生各种时序;通过一个仲裁器来解决刷新请求和内存正常读/写请求之间的矛盾。内部有两级同步电路用来对外部请求信号实现同步。4.11ROM、PROM、EPROM分别用在什么场合?答:①ROM用在一个计算机系统完成开发以后,容纳不再修改的程序和数据。且批量产量要大的场合。②PROM用于非批量的场合。③EPROM用于软件或系统的开发阶段及批量很小的场合。第五章微型计算机和外设的数据传输5.1外部设备为什么要通过接口电路和主机系统相连?存储器需要接口电路和总线相连吗?为什么?答:1.因为外设的功能多种多样,对于模拟量信息的外设必须要进行A/D和D/A转换,而对于串行信息的外设则必须转换为并行的信息,对于并行信息的外设还要选通。而且外设的速度比CPU慢的多,必须增加缓冲功能。只有这样计算机才能使用这些外设。而所有这些信息转换和缓冲功能均由接口电路才能完成。2.存储器不需要接口电路和总线相连。课后答案网3.因为存储器功能单一,且速度与CPU相当。因此可直接挂在CPU总线上。5.2是不是只有串行数据形式的外设需要接口电路和主机系统连接?为什么?www.hackshp.cn答:1.不是。并行数据形式的外设也需要接口电路和主机系统连接。2.因为,CPU每次只能访问一个外设,因此并行信息的外设需增加选通功能,才能满足CPU的访问要求,必须用接口电路。5.3接口电路的作用是什么?按功能可分为几类?答:1.接口电路的作用就是在外设和CPU之间起信息变换和缓冲功能。2.按功能可分为两类:1一种是使微处理器正常工作所需要的辅助电路。2另一种是输入/输出接口电路。5.4数据信息有哪几类?举例说明它们各自的含义。第33页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:1.数据信息有四类:数字量、模拟量、开关量、脉冲量。2.如键盘、磁带机等就是数字量信息;温度、湿度、压力等转换的电信号就是模拟量;电机的起停、发光设备的亮灭等都是开关量;计数脉冲、定时脉冲等都是脉冲量。5.5CPU和输入/输出设备之间传送的信息有哪几类?答:有数据信息、控制信息、状态信息三类。5.6什么叫端口?通常有哪几类端口?计算机对I/O端口编址时通常采用哪两种方法?在8086/8088系统中,用哪种方法对I/O端口进行编址?答:1.CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口。2.有数据端口、控制端口、状态端口三类。3.在微型计算机中通常用两种I/O端口编址方式:存储器映象寻址和I/O端口单独寻址。4.在8086/8088系统中,用I/O端口单独寻址方式编址。5.7为什么有时候可以使两个端口对应一个地址?答:因为这两个端口一个是只读端口,一个是只写端口。而CPU对一个I/O端口地址可进行读/写两种访问。如果将这两个只读和只写端口编为一个地址,则CPU对该端口地址读操作对应的是只读端口;CPU对该端口地址写操作则对应的是只写端口,互不影响。因此可以使两个单向的只读和只写端口对应一个端口地址。5.8CPU和外设之间的数据传送方式有哪几种?实际选择某种传输方式时,主要依据是什么?答:1.CPU和外设之间的数据传送方式有三种:程序方式、中断方式、课后答案网DMA方式。2.主要依据是外设的情况(外设的速度和外设提供信息的方式)。5.9无条件传送方式用在哪些场合?画出无条件传送方式的工作原理图并说明。答:1.无条件传送方式只用在对一些简单外设进行操作的场合。如开关、www.hackshp.cnLED显示等。2.无条件传送方式的工作原理图:(见书203页图5.2所示)1在无条件输入时:CPU执行一条输入指令,使RD和M/IO信号为有效低电平,并对应送出该端口地址,因此选中输入缓冲器,打开其三态门,使输入缓冲器的数据经数据总线送到CPU的累加器中。2在无条件输出时:CPU执行一条输出指令,使WR和M/IO信号为有效低电平,并对应送出该端口地址,因此选中输出锁存器,将由累加器送到数据总线上的数据打入输出锁存器中供外设使用。5.10条件传送方式的工作原理是怎样的?主要用在什么场合?画出条件传送(查询)方式输出过程的流程图。第34页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:1.条件传送方式的工作原理是:外设给CPU提供一个状态信息,当CPU要访问外设时,必须先检测该状态信息是否合乎要求,不停检测直至合乎要求时才进行CPU对外设的访问。2.查询方式主要用在外设较少,数据交换不频繁的非实时系统的场合。3.查询式输出过程的流程图如右:开始5.11设一个接口的输入端口地址为0100H,而它的状态端口地址为0104H,状态口中第5位为1表示输入缓冲区中有一个字初始化节准备好,可输入。设计具体程序实现查询式输入。答:DATASEGMENT外设空NBUFFERDB20DUP(?);接收数据缓Y冲区CPU从内存取数DATAENDS由累加器输出给外CODESEGMENT设ASSUMEDS:DATA,CS:CODENSTAT:MOVAX,DATA;对DS初始外设空化YMOVDS,AX后续处理MOVDI,OFFSETBUFFERMOVDX,0104HSTATIN:INAL,DXTEST课后答案网AL,20H;测试第5位JZSTATIN;第5位为0继续测试MOVDX,0100HINwww.hackshp.cnAL,DX;输入数据MOV[DI],ALCODEENDSENDSTAT5.12查询式传送方式有什么缺点?中断方式为什么能弥补查询方式的缺点?答:1.查询式传送方式缺点是:花费CPU的时间作等待循环,大大降低了CPU的运行效率。2.中断方式是在外设准备就绪时向CPU申请中断,再进行传送,因而CPU无需花费时间作等待循环,弥补了查询方式的缺点。5.13画一个用中断方式进行输出传输的接口电路。第35页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:中断方式输出的接口电路如下:数据DB锁存选通信号端口译器AB码ACKRM/IO+5VWRBUSY中断请求中断屏蔽INTR(中断请求)触发器Q5.14叙述可屏蔽中断的响应和执行过程。答:①接口发中断请求信号。②CPU的IF=1课后答案网时,当前指令执行完后,CPU进行中断回答,发两个INTA负脉冲。③接口将中断类型号n送CPU。④当前的PSW、CS和IP推入堆栈,并清除IF和TF。⑤(4×n)作为IP,(4×n+2)作为CS,即取中断向量。⑥执行中断子程序,并开中断。www.hackshp.cn⑦中断返回IRET指令使IP、CS和PSW弹出堆栈。⑧返回被中断的程序。5.15通常解决中断优先级的方法有哪几种?各有什么优缺点?答:1.有软件查询方式、简单硬件方式——菊花链法、专用硬件方式三种。2.软件查询方式的优点是节省硬件,缺点是中断响应时间长;简单硬件方式的优点是中断响应时间短,硬件较简单,缺点是优先级固定,变动起来很麻烦;专用硬件方式优点是对优先级可编程修改,中断管理非常方便,缺点是硬件复杂的多,好在有专用的中断控制器。第36页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)5.16和DMA比较,中断传输方式有什么不足之处?答:CPU执行一次传送要花费许多与传送操作无关的指令执行等时间,另外中断传送方式不能进行数据块传送,而是按字节或字传送。5.17叙述用DMA方式传送单个数据的全过程。答:①接口准备就绪,发DMA请求信号给DMA控制器。②DMA控制器向CPU转发总线请求信号HOLD。③CPU向DMA控制器发总线请求允许信号HLDA,DMA控制器得到总线控制权。④DMA控制器把地址送地址总线。⑤DMA控制器向接口发DMA请求确认信号。⑥内存和接口通过数据总线传送数据。⑦DMA控制器撤销总线请求信号HOLD。⑧8086CPU收回总线控制权。5.18DMA控制器的地址线为什么是双向的?什么时候往DMA控制器传输地址?什么时候DMA控制器往地址总线传输地址?答:1.因为DMA控制器要接受CPU的控制,接收CPU发来的初始化等信息,这要求地址线来寻址各端口,地址线为输入线。又因为DMA控制器可控制总线,这要求地址线为输出。所以地址线必须为双向才行。2.CPU要对DMA控制器发初始化信息时,必须往DMA控制器传输地址。3.DMA控制器得到总线控制权后,向地址总线传输地址。课后答案网5.19在设计DMA传输程序时,要有哪些必要的模块?设计一个启动数据块输出的程序段。答:1.要有DMA的初始化模块:对字节计数器、地址寄存器和控制寄存器置初值。还要有对接口部件设置控制字的模块:指出数据传输方向,并启动I/O操作。2.启动数据块输出的程序段如下:www.hackshp.cnIDLO:INAL,INTSTAT;接口状态寄存器的状态位(2)是否忙TESTAL,04JNZIDLO;忙,则等待MOVAX,COUNT;不忙,则设置计数初值OUTBYTE_REG,AX;对字节计数器BYTE_REG初始化LEAAX,BUFFER;设置地址初值OUTADD_REG,AX;对DMA地址寄存器ADD_REG初始化MOVAL,DMAC;取原DMA控制字ORAL,08H;设置方向为输出第37页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)OUTDMACON,AL;置DMA控制字MOVAL,INTC;取原接口控制字ORAL,04H;设置传输方向为输出及允许OUTINTCON,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的信号能够做出解释;此外,要对送来的片选信号进行识别,以便判断当前本接口是否被访问,如果受到访问,还要决定是接口中www.hackshp.cn那个寄存器受到访问。2.将A1接在接口的A0上,A2接在接口的A1上;将接口的CS接在74LS138的某一输出端,RD和WR分别接在对应的控制总线上。从而可实现接口中的共8个只读和只写寄存器的寻址。(由于用的是8086CPU,所以A0空。)6.2接口部件的输入/输出操作具体对应哪些功能,举例说明。答:1.具体对应的功能为:寻址功能、输入/输出功能、数据转换功能、联络功能和错误检测功能等。2.例如串行输入操作:首先要将串行输入的数据转换为并行输入的数据放入输入缓冲器,然后发一个准备好信号通知CPU来读取该输入寄存器的内容。从而完成一个串第38页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)行数据的输入过程。其中在数据转换时自动检测传输的错误。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个只写寄存器进行端口寻址。而串行接口部件的控制寄存器和数据输出寄存器是只写的,状态寄www.hackshp.cn存器和数据输入寄存器是只读的,所以可用一位地址线来区分。6.8在数据通信系统中,什么情况下可以采用全双工方式,什么情况下可用半双工方式?答:对于近距离较大信息量的传输应采用全双工方式。而对于远距离或较少信息量的传输或单向的输入或输出设备时应采用半双工方式。6.9什么叫同步通信方式?什么叫异步通信方式?它们各有什么优缺点?答:1.在同一时钟控制下需用同步字符同步的信息按组传送的方式叫同步通信方式。2.在两个相近频率的时钟分别控制下只需一个起始位的信息按字符传送的方式叫异步通信方式。3.在传输率相同时同步方式的信息有效率要比异步方式下的高。但同步方式必须传送第39页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)时钟信号,异步方式只要两端的时钟频率相近即可。6.10什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,时钟频率为多少?答:1.波特率因子:时钟频率和位传输率的比值。此比值必须为16、32或64。2.波特率:位传输率即为波特率。3.时钟频率=波特率因子×波特率=64×1200=76800Hz。6.11标准波特率系列指什么?答:国际上规定的波特率标准值为:110、300、600、1200、1800、2400、4800、9600和19200、、38400、57600、115200。6.12设异步传输时,每个字符对应1个起始位、7个信息位、1个奇/偶校验位和1个停止位,如果波特率为9600,则每秒钟能传输的最大字符数为多少?答:每个字符所占的总位数为:1+7+1+1=10位。所以每秒钟能传输的最大字符数为9600/10=960个字符。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个端口地址。www.hackshp.cn3.因为,一个数据输入缓冲寄存器为只写,一个数据输出缓冲寄存器为只读,可共用一个端口地址,在读/写信号配合下进行读/写操作。一个模式寄存器、2个同步字符寄存器和1个控制寄存器都是只写的,但它们有初始化约定,可用一个端口写入,1个状态寄存器为只读,因此与上面共用的一个写入端口合用一个读/写端口地址进行寻址。因此只要2个端口地址即可。6.158251A内部有哪些功能模块?其中读/写控制逻辑电路的主要功能是什么?答:1.8251A内部有7个功能模块组成。为:接收缓冲器、接收控制电路、发送缓冲器、发送控制电路、数据总线缓冲器、读/写控制逻辑电路、调制/解调控制电路。2.读/写控制逻辑电路的主要功能是:用来配合数据总线缓冲器工作。第40页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)1接收写信号WR,并将来自数据总线的数据和控制字写入8251A;2接收读信号RD,并将数据或状态字从8251A送往数据总线;3接收控制/数据信号C/D,将此信号和读/写信号合起来通知8251A,当前读/写的是数据还是控制字、状态字;4接收时钟信号CLK,完成8251A的内部定时;5接收复位信号RESET,使8251A处于空闲状态。6.16什么叫异步工作方式?画出异步工作方式时8251A的TxD和RxD线上的数据格式。答:1.在两个相近频率的时钟分别控制下,只需一个起始位的信息按字符传送的方式叫异步发送器输出D0D1……Dn由8251A产生TxD启动位数据位校验位停止位接收器输入D0D1……Dn不出现在数据总线上RxD启动位数据位校验位停止位工作方式。2.异步工作方式时8251A的TxD和RxD线上的数据格式为:6.17什么叫同步工作方式?什么叫双同步字符方式?外同步和内同步有什么区别?画出双同步工作方式时8251A的TxD线和RxD线上的数据格式。答:1.在同一时钟控制下需用同步字符同步的信息按组传送的方式叫同步工作方式。2.需用2个同步字符的同步工作方式叫双同步字符方式。课后答案网3.外同步只能工作于同步接收方式,而内同步即适用于同步接收,也适用于同步发送。外同步是由外设来搜索同步字符,一旦搜索成功,立即给串行接口的同步输入端送来一个高电平,表示同步已实现,串行接收端开始接收数据。而内同步由串行接口www.hackshp.cn本身来搜索同步字符而实现同步的。发送格式TxD线上的串行输出数据同步字符1同步字符2数据字符接收格式RxD线上的串行输入数据同步字符1同步字符2数据字符4.双同步工作时8251A的TxD和RxD线上的数据格式为:6.188251A和CPU之间有哪些连接信号?其中C/D和RD、WR如何结合起来完成对命令、数据的写入和状态、数据的读出?第41页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:1.8251A和CPU之间的连接信号有:片选信号—CS,数据信号—D7~D0,读/写控制信号—RD、WR、C/D,收发联络信号—TxRDY、TxE、RxRDY、SYNDET。2.C/D=0、RD=0、WR=1时CPU从8251A输入数据;C/D=0、RD=1、WR=0时CPU往8251A输出数据;C/D=1、RD=0、WR=1时CPU读取8251A的状态;C/D=1、RD=1、WR=0时CPU往8251A写入控制命令。6.198086/8088系统中,8251A的C/D端应当和哪个信号相连,以便实现状态端口、数据端口、控制端口的读/写?答:8251A的C/D端应与地址总线的A1相连。6.208251A与外设之间有哪些连接信号?答:收发联络信号—DTR、DSR、RTS、CTS,数据信号—TxD、RxD。6.21为什么8251A要提供DTR、DSR、RTS、CTS四个信号作为和外设的联络信号?平常使用时是否可以只用其中两个或者全部不用?要特别注意什么?说明CTS端的连接方法。答:1.8251A的这四个信号是提供给CPU和外设进行联络用的,因为CPU不能和外设直接相连。这样CPU对外设的控制信号DTR和RTS及外设给CPU的状态信号DSR和CTS必须由接口(此处为8251A)来传递。所以要提供此4个信号作为和外设的联络信号。课后答案网2.平常使用时可以只用其中两个或者全部不用。3.要特别注意的是在某个时候CTS要输入一个低电平。否则CPU不能往8251A发送数据。www.hackshp.cn4.CTS一般接地,以确保不用它作联络信号时也维持低电平输入。6.228086系统中采取什么措施来实现8位接口芯片和低8位数据线的连接且满足对奇/偶端口的读/写?这样做的道理是什么?答:1.将系统总线的A1与接口的A0相连接即可。软件上采用连续的偶地址代替端口的奇/偶地址。2.因为这样连接,从CPU这边来说,端口地址都是偶地址,传输信息时,信息总是出现在CPU的低8位数据总线上;而从端口这边来说,端口地址中既有奇地址也有偶地址,且是连续的,这又满足了许多8位接口芯片对端口地址的要求。第42页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)6.23对8251A进行编程时,必须遵守哪些约定?答:①芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。②若模式字中规定了8251A工作在同步模式,则CPU接着往奇地址端口输出的1个或2个字节就是同步字符被写入同步字符寄存器。若有两个同步字符,则会按先后分别写入第一个同步字符寄存器和第二个同步字符寄存器。③此后,只要不是复位命令,不管是在同步模式还是在异步模式下,由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。6.248251A的模式字格式如何?参照教材上给定格式编写如下模式字:异步方式,1个停止位,偶校验,7个数据位,波特率因子为16。答:1.8251A的模式字格式为:(含义见书240页图6.11所示)S2S1EPPENL2L1B2B1SCSESDEPPENL2L100异步模式字同步模式字2.因是异步方式,波特率因子为16:B2B1=10;1个停止位:S2S1=01;偶校验:EP=1,PEN=1;7个数据位:L2L1=10。所以模式字为01111010B=7AH。6.258251A的控制字格式如何?参照教材上列出的格式给出如下控制字:发送允许,接收允许,DTR端输出低电平,TxD端发送空白字符,RTS端输出低电平,内部不复位,出错标志复位。答:1.8251A的控制字格式为:课后答案网(含义见书241页图6.12所示)EHIRRTSERSBRKRxEDTRTxEN2.发送允许:TxEN=1,接收允许:RxE=1,DTR端输出低电平:DTR=1,TxD端发送空白字符SBRK=1www.hackshp.cn;RTS端输出低电平:RTS=1,内部不复位:IR=0,出错标志复位ER=1。EH=0/1则控制字为00111111B或10111111B=3FH或0BFH。6.268251A的状态字格式如何?哪几位和引腿信号有关?状态位TxRDY和引腿信号TxRDY有什么区别?它们在系统设计中有什么用处?答:1.8251A的状态字格式为:(含义见书242页图6.13所示)DSRSYNDETFEOEPETxERxRDYTxRDY2.DSR、SYNDET、TxE、RxRDY四个状态位与其对应的引腿信号有关。3.状态位TxRDY只要数据输出缓冲器为空就置1。而引腿TxRDY为1的条件是:数据输出缓冲器为空、CTS为有效低电平、TxEN为1才可以,缺一不行。4.能让CPU随时了解当前8251A的工作状态,而执行相应的操作。对查询方式的设计第43页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)非常方便。6.27参考初始化流程,用程序对8251A进行同步模式设置。奇地址端口的地址为66H,规定用内同步方式,同步字符为2个,用奇校验,7个数据位。答:模式字为:00011000B=18H。两个同步字符取16H,控制字为97H,它使8251A对同步字符进行检索;同时使状态寄存器中的3个出错标志复位;使8251A的发送器启动,接收器也启动;CPU当前已准备好进行数据传输。具体程序段如下:MOVAL,18H;设置模式字OUT66H,ALMOVAL,16H;发送两个同步字符OUT66H,ALOUT66H,ALMOVAL,97H;设置控制字OUT66H,AL6.28设计一个采用异步通信方式输出字符的程序段,规定波特率因子为64,7个数据位,1个停止位,用偶校验,端口地址为40H、42H,缓冲区首址为2000H:3000H。答:模式字为:01111011B=7BH。控制字为:00110101B=35H。MOVAL,0;为发复位命令作准备OUT42H,ALOUT42H,ALOUT课后答案网42H,ALMOVAL,40H;发复位命令OUT42H,ALMOVwww.hackshp.cnAL,7BH;设置模式字,异步方式,规定波特率因子为64;7个数据位,1个停止位,偶校验OUT42H,ALMOVAL,35H;设置控制字,使发送器和接收器启动,并清除;出错标志OUT42H,ALPUSHDSMOVBX,2000H;DS:BX指向输出缓冲区首址MOVDS,BXMOVBX,3000H;缓冲区指针初始化第44页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVCX,100H;发送100H个字节BEGIN:INAL,42H;读取状态字,测试TxRDY是否为1TESTAL,01HJZBEGIN;为0表示外设还未取走字符MOVAL,[BX];从输出缓冲区取数OUT40H,AL;发送字符INCBX;修改缓冲区指针LOOPBEGIN;则再发送下一个字符POPDS┆6.29并行通信和串行通信各有什么优缺点?答:并行通信的优点是信息实际传输速度快,信息率高。缺点是需多条通信线。串行通信的优点是只用1至2条通信线,但信息传输速度较慢。6.30在输入过程和输出过程中,并行接口分别起什么作用?答:简单说,并行接口只起着桥梁和联络的作用。具体如下:①输入过程:外设将数据送给接口,并使状态线“输出准备好”成为高电平。接口把数据接收到数据输入缓冲寄存器的同时,使“数据输入回答”线变为高电平,作为对外设的响应。外设接到此信号,便撤消数据和“数据输入准备好”信号。数据到达接口后,接口便在状态寄存器中设置“输入准备好”状态位,并发中断请求,CPU可用查询方式或中断方式来设法读取接口中的数据课后答案网。CPU读取数据后,接口会自动清除状态寄存器中的“输入准备好”位,并使数据总线处于高组状态。此后又可以开始下一个输入过程。②输出过程:当外设从接口取走一个数据后,接口就会将状态寄存器中的www.hackshp.cn“输出准备好”状态位置1,并发中断请求,以表示CPU当前可以通过查询方式或中断方式往接口中输出数据。当CPU输出的数据到达接口的输出缓冲器中后,接口会自动清除“输出准备好”状态位,并将数据送往外设,同时,接口往外设发送一个“驱动信号”来启动外设接收数据。外设被启动后,开始接收数据,并往接口发一个“数据输出回答”信号。接口收到此信号,便将状态寄存器中的“输出准备好”状态位重新置1,以便CPU输出下一个数据。6.318255A的三个端口在使用时有什么差别?答:端口A和端口B常常作为独立的输入端口或者输出端口,端口C则配合端口A和端口B工作。第45页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)6.32当数据从8255A的端口C往数据总线上读出时,8255A的几个控制信号CS、A1、A0、RD、WR分别是什么电平?答:CS=0、A1=1、A0=0、RD=0、WR=1。“0”为低电平,“1”为高电平。6.338255A的方式选择控制字和置1/置0控制字都是写入控制端口的,那么,它们是由什么来区分的?答:由最高位D7位来区分。D7=1时为方式选择控制字,D7=0时为端口C置1/置0控制字。6.348255A有哪几种工作方式?对这些工作方式有什么规定?答: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位为输入。答:MOVDX,00C6HMOVAL,0B1H;取方式选择控制字为B1H(10110001B)或B9HOUTDX,AL6.36设8255A的4个端口地址为00C0H,00C2H,00C4H,00C6H,要求用置1/置0方式对PC6置1,对PC4置0。课后答案网答:MOVDX,00C6HMOVAL,0DH;对PC6置1的控制字为0DHOUTDX,ALMOVALwww.hackshp.cn,08H;对PC4置0的控制字为08HOUTDX,AL6.378255A在方式0时,如进行读操作,CPU和8255A分别要发什么信号?对这些信号有什么要求?据此画出8255A方式0的输入时序。答:1.CPU要发RD、CS、A2、A1四个信号,8255A要发数据信号D7~D0。2.对信号的要求如下:1CPU在发出读信号前,先发出地址信号。且在整个读出期间,地址信号保持有效。2输入数据必须保持到读信号结束后才消失。3要求读脉冲的宽度至少为300ns。第46页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)3.8255A方式0的输入时序见书256页图6.24所示。6.388255A在方式0时,如进行写操作,CPU和8255A分别要发什么信号?画出这些信号之间的时序关系。答:1.CPU要发WR、CS、A2、A1控制和地址信号及D7~D0数据信号,8255A输出数据到外设。2.8255A方式0的输出时序见书257页图6.25所示。6.398255A的方式0一般使用在什么场合?在方式0时,如要使用应答信号进行联络,应该怎么办?答:1.方式0一般使用在同步传送和查询式传送中。2.将端口A和端口B作为数据端口,把端口C的4个数位规定为输出口,用来输出一些控制信号,而把端口C的另外4位规定为输入口,用来读入外设的状态。6.408255A的方式1有什么特点?参考教材中的说明,用控制字设定8255A的A口工作于方式1,并作为输入口;B口工作于方式1,并作为输出口,用文字说明各个控制信号和时序关系。假定8255A的端口地址为00C0H,00C2H,00C4H,00C6H答:1.方式1有如下特点:1端口A和端口B可分别作为两个数据口工作于方式1,并且任何一个端口可作为输入或输出口。2若只有一个端口工作于方式1,则端口C有三位被规定配合其工作,其余共13位可工作于方式课后答案网0。3若两个端口都工作于方式1,则端口C有6位被规定配合其工作,端口C所剩2位仍可作为输入或输出。2.控制字为10110100B=B4H。MOVwww.hackshp.cnDX,00C6HMOVAL,0B4H;取方式选择控制字为B4H(10110100B)OUTDX,AL3.方式1输入口A口的各个控制信号和时序关系如下:1当外设来的输入数据出现之后,STBA接着就到,其宽度至少要求为500ns。2过tSTB时间后,IBFA有效,它可供CPU查询,为CPU工作于查询方式提供了条件。STBA3结束后,过tSIT时间,便会发出INTRA,为CPU工作于中断方式输入数据提供了条件。第47页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)4当CPU发出的RD有效后,过tRIT时间,INTRA被清除。在RD结束之后,数据已经读到CPU的寄存器中,经过tRIB时间,IBFA变低,从而可开始下一个数据输入过程。4.方式1输出口B口的各个控制信号和时序关系如下:1方式1的输出端口一般用于中断方式与CPU相联系。CPU响应中断后,便往8255A输出数据,并发出WR。WR的上升沿一方面清除中断请求信号INTRB,表示CPU响应了中断;另一方面,使OBFB有效,通知外设接收数据。2在CPU发出WR后的tWB时间后,数据就出现在端口的输出缓冲器中。当外设接收数据后,发一个ACKB信号。一方面使OBFB无效,表示数据已经取走,当前输出缓冲区为空;另一方面,又使INTRB有效,申请中断,从而可以开始一个新的输出过程。6.418255A的方式2用在什么场合?说明端口A工作于方式2时各信号之间的时序关系。答:1.方式2应用于分时工作的双向外设(输入输出设备)的连接。2.端口A工作于方式2时各信号之间的时序关系如下:1对于方式2的输出过程:CPU响应中断,并往8255A输出一个数据,并使WR有效。WR一方面清除INTRA信号,另一方面使OBFA有效。外设收到OBFA后,发出ACKA信号,使8255A的输出锁存器打开,从而数据便出现在8255A与外设之间的数据连线上课后答案网。ACKA信号也使OBFA信号无效,从而可开始下一个数据传输过程(输入或输出)。STBA也一起来到,使数2对于方式2的输入过程:当外设往8255A送来数据时,据锁存到8255Awww.hackshp.cn的输入锁存器中,从而使IBFA有效。在STBA结束时,便发出INTRA请求。在CPU响应中断进行读操作时,会使RD有效将数据从8255A读到CPU中,于是IBFA又变为无效,INTRA也被清除。第七章中断控制器、DMADDMAMA控制器和计数器/定时器7.18259A的初始化命令字和操作命令字有什么差别?它们分别对应于编程结构中哪些内部寄存器?答:1.8259A的初始化命令字是计算机系统启动时,由初始化程序设置的。初始化命令字一旦设定,一般在系统工作过程中就不再改变。操作命令字则是由应用程序设定的,第48页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)它们用来对中断处理过程作动态控制,在一个系统运行过程中,操作命令字可以多次设置。2.初始化命令字对应于编程结构的ICW1、ICW2、ICW3、ICW4共4个寄存器。操作命令字对应于编程结构的OCW1、OCW2、OCW3共3个寄存器。7.28259A的中断屏蔽寄存器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引腿发中断申请的允许/屏蔽。7.38259A的全嵌套方式和特殊全嵌套方式有什么差别?各自用在什么场合?答:1.全嵌套工作方式,只有更高级的中断请求来到时,才会进行嵌套。而特殊全嵌套方式则能被同级和高级的中断请求所嵌套。2.全嵌套方式用于单片8259A的场合。特殊全嵌套方式用于多片8259A系统。7.48259A的优先级循环方式和优先级特殊循环方式有什么差别?答:在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也课后答案网由此而定。而优先级自动循环方式初始优先级队列为IR0~IR7。7.58259A的特殊屏蔽方式和普通屏蔽方式相比,有什么不同之处?特殊屏蔽方式一般用在什么场合?www.hackshp.cn答:1.在特殊屏蔽方式中用OCW1对屏蔽寄存器中某一位进行置位时,就会同时使ISR中的对应位自动清0。而普通屏蔽方式对OCW1的操作不影响ISR中各位的状态。2.特殊屏蔽方式用于中断处理程序中,以开放比本身的优先级较低的中断请求。7.68259A有几种结束中断处理的方式?各自应用在什么场合?除了中断自动结束方式以外,其他情况下如果没有在中断处理程序中发中断结束命令,会出现什么问题?答:1.8259A有三种结束中断处理的方式。2.中断自动结束方式用于只有一片8259A,并且多个中断不会嵌套的情况。一般的中断结束方式用在全嵌套情况下及多片8259A的级联系统中。特殊中断结束方式用于循环优先级的8259A中。3.不发中断结束命令会使8259A认为该中断未结束,从而挡住了低优先级的中断被响第49页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)应,即中断控制功能不正常。7.78259A引入中断请求的方式有哪几种?如果对8259A用查询方式引入中断请求,那会有什么特点?中断查询方式用在什么场合?答:1.引入中断请求的方式有:边沿触发方式、电平触发方式、中断查询方式三种。2.中断查询方式的特点:1设备仍然通过往8259A发中断请求信号要求CPU服务,但8259A不使用INT信号向CPU发中断请求信号。2CPU内部的中断允许触发器复位,所以禁止了外部对CPU的中断请求。3CPU要使用软件查询来确认中断源,从而实现对设备的中断服务。3.中断查询方式一般用在多于64个中断的场合,也可以用在一个中断服务程序中的几个模块分别为几个中断设备服务的情况。7.88259A的初始化命令字有哪些?它们各自有什么含义?哪几个应写入奇地址?哪几个应写入偶地址?答:1.8259A的初始化命令字有ICW1、ICW2、ICW3、ICW4共四个。2.ICW1——芯片控制初始化命令字。ICW2——设置中断类型码的初始化命令字。ICW3——标志主片/从片的初始化命令字。ICW4——方式控制初始化命令字。3.ICW2、ICW3、ICW4必须写入奇地址端口中。4.ICW1必须写入偶地址端口中。7.98259A的ICW2设置了中断类型码的哪几位?说明对课后答案网8259A分别设置ICW2为30H、38H、36H有什么差别?答:1.8259A的ICW2设置了中断类型码的高5位。低3位中断类型码对应引入中断的引腿号。2.当设置ICW2为www.hackshp.cn30H和36H时,完全相同。对应的8个中断类型码为30H~37H。而设置ICW2为38H时,对应的8个中断类型码为38H~3FH。7.108259A通过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。第50页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)7.11试按照如下要求对8259A设置初始化命令字:系统中有1片8259A,中断请求信号用电平触发方式,下面要用ICW4,中断类型码为60H、61H……67H,用特殊全嵌套方式,不用缓冲方式,采用中断自动结束方式。8259A的端口地址为90H、92H。答:MOVAL,1BH;ICW1的命令字为00011011B=1BHOUT90H,AL;ICW1送偶地址端口MOVAL,60H;ICW2的命令字为60HOUT92H,AL;ICW2送奇地址端口MOVAL,13H;ICW4的命令字为00010011B=13HOUT92H,AL;ICW4送奇地址端口7.12怎样用8259A的屏蔽命令字来禁止IR3和IR5引腿上的请求?又怎样撤销这一禁止命令?设8259A的端口地址为90H、92H。答:1.CLIINAL,92H;(AL)←(IMR)ORAL,28H;禁止IR3和IR5引腿上的中断请求OUT92H,AL;OCW1送奇地址端口STI2.CLIINAL,92H;(AL)←(IMR)ANDAL,0D7H;允许IR3和IR5引腿上的中断请求OUT92H,AL;OCW1送奇地址端口STI课后答案网7.13试用OCW2对8259A设置中断结束命令,并使8259A按优先级自动循环方式工作。答:MOVAL,0A0H;OCW2的命令字为10100000B=A0H,满足上述要求www.hackshp.cnOUTPORT0,AL;OCW2送偶地址端口7.14用流程图来表示特殊全嵌套方式的工作过程。设主程序运行时先在IR2端有请求,接着IR2端又有请求,而此时前一个IR2还未结束,后来IR3端有请求,再后来IR1端有请求。答:流程图如下页所示:7.15说明特殊屏蔽方式的使用方法。为什么要用“或”的方法来设置屏蔽字?答:1.某一中断服务程序先用OCW3命令字(ESMM=1,SMM=1)使8259A工作在特殊屏蔽方式,再用OCW1对IMR中本中断的对应位进行置位,就可以使系统除了对本级中断外,响应其他任何未被屏蔽的中断请求。中断处理结束时,用OCW1撤销前面设第51页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)置的屏蔽位,并用OCW3撤销了特殊屏蔽方式。8259A又按照原优先级方式工作。主程序IR2中断处理程序初始化IR2又有中断开中断IR2请求中IR2"中断处理程序断开中断IR1中断处理程序开中断IR3中断请求IR3中断处理程序开中断关中断IR1中断请求关中断中断结束命令关中断┆中断结束命令开中断中断结束命令┆开中断中断返回关中断开中断中断返回中断结束命令中断返回开中断中断返回2.用“或”的方法来设置屏蔽字可以不影响其他位的屏蔽状态。7.1680386系统中,8259A采用了级连方式,试说明在主从式中断系统中8259A的主片和从片的连接关系。课后答案网答:从片的INT输出接主片的IR0~IR7的某一输入端;主片的CAS2~CAS0接从片的CAS2~CAS0;主片的INTA和从片的INTA连在一起接CPU的INTA输出端;主片和从片的WR、RDwww.hackshp.cn、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,而且撤除总线请第52页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)求信号,就完成了对一个数据的DMA输出传输。7.18对一个DMA控制器的初始化工作包括哪些内容?答:①将数据传输缓冲区的起始地址或者结束地址送到地址寄存器中;②将传输的字节数或字数送到计数器中。③通过模式寄存器设置工作方式等。7.19DMA控制器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有效。7.208237A有哪几种工作模式?各自用在什么场合?答:1.8237A有4种工作模式:单字节传输模式、块传输模式、请求传输模式、级联传输模式。2.单字节传输模式用于单个字节的DMA输入/输出;块传输模式用于连续进行多个字节的传输;请求传输模式用于受接口控制的连续字节传输;级联传输模式用于多片课后答案网主从式DMA系统中的主片的工作模式。7.21什么叫DMA控制器的自动预置功能?这种功能是用得很普遍的,举一个例子说明它的使用场合。www.hackshp.cn答:1.自动预置功能就是DMA控制器某通道在当前字节计数器的计数值到达0时,当前地址寄存器和当前字节计数器会从基本地址寄存器和基本字节计数器中自动重新取得新值,从而又可以进入下一个数据传输过程。2.如IBMPC/XT中,8237A的通道0用于对动态RAM进行刷新,就设置为自动预置功能。从头到尾进行一遍刷新后,就又可以自动重新再来若干遍刷新,保持数据不从动态RAM中丢失。用于同一内存地址的数据块重复传输中。7.22用DMA控制器进行内存到内存的传输时,有什么特点?答:固定用通道0的地址寄存器存放源地址,而用通道1的地址寄存器和字节计数器存放目的地址和计数值。传输时,目的地址和计数值象通常一样进行加1减1操作,源地第53页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)址的值可通过控制寄存器的D1位设置,若为1则不变。另外用暂存器作为数据传输时DMA的数据暂存用。另外,DMA控制器进行内存到内存的传输是通过设置控制寄存器的D0=1来设置的。7.23DMA控制器8237A是怎样进行优先级管理的?答:8237A有两种优先级管理方式:固定优先级管理方式,优先级高低固定为:通道0、1、2、3。循环优先级管理方式,通道的优先级依次循环,当某通道进行一次传输后,其优先级变为最低,而其相邻的高一号通道的优先级变为最高。7.24设计8237A的初始化程序。8237A的端口地址为0000~000FH,设通道0工作在块传输模式,地址加1变化,自动预置功能;通道1工作于单字节读传输,地址减1变化,无自动预置功能;通道2、通道3和通道1工作于相同方式。然后对8237A设控制命令,使DACK为高电平有效,DREQ为低电平有效,用固定优先级方式,并启动8237工作。答:MOVAL,04HMOVDX,DMA+8;DMA为端口首地址0000H,DMA+8为控制寄;存器端口号OUTDX,AL;输出控制命令,关闭8237AMOVAL,00MOVDX,DMA+0DH;DMA+0DH为总清命令端口号OUTDX,AL;发总清命令(即复位命令)MOVDX,DMA+0BH;DMA+0BH为模式寄存器的端口号MOV课后答案网AL,98HOUTDX,AL;对通道0选择模式,模式字为98H:块读传输模www.hackshp.cn;式,地址加1变化,自动预置功能MOVAL,69HOUTDX,AL;对通道1选择模式,模式字为69H:单字节读传;输,地址减1变化,无自动预置功能MOVAL,6AHOUTDX,AL;对通道2选择模式,模式字为6AH:功能同通道1MOVAL,6BHOUTDX,AL;对通道3选择模式,模式字为6BH:功能同通道1第54页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVDX,DMA+8MOVAL,0C0H;控制字格式为C0H:DACK高电平有效,DREQ;低电平有效,固定优先级,启动工作OUTDX,ALMOVDX,DMA+0FH;DMA+0FH为综合屏蔽命令端口号MOVAL,0OUTDX,AL;去除四个通道的屏蔽┆7.25概述怎样用软件方法和硬件方法来进行定时。答:①软件方法就是根据所需要的时间常数来设计一个延迟子程序。当延迟子程序执行完后,可直接执行下面的操作,也可用输出指令输出一个信号作为定时输出。②硬件方法使用计数器/定时器。根据需要的定时时间,用指令对计数器/定时器设置定时常数,并用指令启动计数器/定时器,于是计数器/定时器开始计数,计到确定值时,便自动产生一个定时输出。7.268253计数器/定时器中,时钟信号CLK、门脉冲信号GATE分别起什么作用?答:时钟信号CLK决定了计数的速率,是计数减1的依据。而门脉冲信号GATE是作为对时钟的控制信号,以控制计数的启停。7.27说明8253在6种工作方式下的特点,并举例说明使用场合。课后答案网答:①模式0、模式1、模式4、模式5为软件启动或硬件启动的不自动重复的计数方式;模式2、模式3为即可软件启动也可硬件启动的自动重复的定时器方式。②作为计数器时,8253在GATE控制下进行减1计数,减到终值时,输出一个信号,至此计数过程便结束。作为定时器工作时,www.hackshp.cn8253在门控GATE控制下进行减1计数,减到终值时,又自动装入初值,重新作减1计数,于是输出端会不间断地产生为时钟周期整数倍的定时间隔。③定时方式一般用于实时控制及周期性操作中,如日时钟定时、扬声器发声、波特率发生器等场合。计数方式则用于外部事件的计数,如生产线上的产品计数等场合。7.288253工作于模式4和模式5时有什么不同?答:模式4是用软件触发启动,GATE为低电平时停止计数;而模式5则用门控GATE的上升沿触发即硬件触发启动,GATE为低电平时不影响计数。7.29编程将8253计数器0设置为模式1,计数初值为3000H;计数器1设置为模式2,计数初值为2010H;计数器2设置为模式4,计数初值为4030H;地址设为0070H、0072H、0074H、第55页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)0076H。答:MOVAL,32H;设置计数器0为模式1OUT76H,ALMOVAX,3000H;写计数初值OUT70H,ALMOVAL,AHOUT70H,ALMOVAL,74H;设置计数器1为模式2OUT76H,ALMOVAX,2010H;写计数初值OUT72H,ALMOVAL,AHOUT72H,ALMOVAL,0B8H;设置计数器2为模式4OUT76H,ALMOVAX,4030H;写计数初值OUT74H,ALMOVAL,AHOUT74H,AL7.30CPU对应DMA控制器的总线请求响应要比中断请求响应快,请分析其原因。课后答案网答:当CPU检测到总线请求信号后在当前总线周期的T4状态或TI状态的下降沿就可响应而出让总线,并发总线响应信号HLDA。而当CPU检测到INTR请求时,则必须要等到当前指令执行完后才能发第一个www.hackshp.cnINTA负脉冲,而且中断响应需两个INTA负脉冲才可组成一个完整的中断响应信号。因此总线请求响应要比中断请求响应快。7.31设8259A工作于优先级循环方式,当前最高优先级为IR4,现在要使优先级最低的为IR1,则应该再设置哪个操作命令字?具体的值是多少?答:1.再设置OCW2操作命令字。2.OCW2的具体的值是C1H(=11000001B),写入偶地址端口。7.32下面是一个对8259A进行初始化的程序段,请为下面程序段加上注释,并具体说明各初始化命令字的含义。PORT0EQU40H;8259A的偶地址端口号PORT1EQU41H;8259A的奇地址端口号第56页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)┆MOVAL,13H;控制初始化命令字ICW1设为13H,中断请求为边沿触;发方式,单片8259A,需写入ICW4MOVDX,PORT0;取8259A的偶地址端口OUTDX,AL;设置ICW1INCDX;取8259A的奇地址端口MOVAL,08H;中断类型码初始化命令字ICW2设为08H,对应于;IR0~IR7的中断类型码为08H~0FHOUTDX,AL;设置ICW2MOVAL,06H;方式控制初始化命令字ICW4设为06H,非特殊全嵌套;方式,非缓冲方式,中断自动结束方式,工作于8080/8085;系统中OUTDX,AL;设置ICW4答:初始化命令字的含义见注释。7.33下面是一个对主从式8259A系统进行初始化的程序段,请对以下程序段加详细注释,并具体说明各初始化命令字的含义。;主片初始化程序M82590EQU40H;主片8259A的偶地址端口号M82591EQU课后答案网41H;主片8259A的奇地址端口号┆MOVAL,11H;控制初始化命令字ICW1设为11H,中断请求为边沿触www.hackshp.cn;发方式,多片8259A,需设置ICW4MOVDX,M82590;取主片8259A的偶地址端口OUTDX,AL;设置ICW1MOVAL,08H;中断类型码初始化命令字ICW2设为08H,对应于;IR0~IR7的中断类型码为08H~0FHINCDX;取主片8259A的奇地址端口OUTDX,AL;设置ICW2MOVAL,04H;ICW3设为04H,只有IR2连有从片8259AOUTDX,AL;设置ICW3MOVAL,01H;方式控制初始化命令字ICW4设为01H,非特殊全嵌套;方式,非缓冲方式,非中断自动结束方式,工作于第57页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com);8086/8088系统中OUTDX,AL;设置ICW4;从片初始化程序S82590EQU90H;从片8259A的偶地址端口号S82591EQU91H;从片8259A的奇地址端口号┆MOVDX,S82590;取从片8259A的偶地址端口MOVAL,11H;控制初始化命令字ICW1设为11H,功能同上OUTDX,AL;设置ICW1MOVAL,70H;中断类型码初始化命令字ICW2设为70H,对应于;IR0~IR7的中断类型码为70H~77HINCDX;取从片8259A的奇地址端口OUTDX,AL;设置ICW2MOVAL,02H;ICW3设为02H,表示本从片与主片的IR2相连OUTDX,AL;设置ICW3MOVAL,01H;方式控制初始化命令字ICW4设为01H,非特殊全嵌套;方式,非缓冲方式,非中断自动结束方式,工作于;8086/8088系统中OUTDX,AL;设置ICW4答:各初始化命令字的含义见注释。课后答案网7.348237A在进行单字节方式DMA传输和块方式DMA传输时,有什么区别?答:区别在于:单字节方式时DMA每完成一个字节传输后,便释放系统总线,CPU至少可占用一个总线周期www.hackshp.cn。块传输方式时,只有当字节计数器减为0,从而在EOP端输出一个负脉冲或者外部I/O接口往DMA控制器的EOP端送一个低电平信号时,8237A才释放总线而结束传输。7.35下面是一个常驻内存的中断服务程序框架和它的装配程序,请对此程序的注释进行补充,以便得到一个完整的注释清单。STACKSEGMENT;设置堆栈段DW256DUP(?)STACKENDSDATASEGMENT;设置数据段8259P0EQU40H;8259A的偶地址端口号第58页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)8259P1EQU41H;8259A的奇地址端口号┆DATAENDSCODESEGMENT;设置代码段ASSUMECS:CODE,DS:DATA,SS:STACK;段说明START1:JMPSTART2;程序开始,直接转START2执行INTSUBPROCFAR;定义一个远过程(段外子程序)INTSUBSTI;开中断PUSHES;保护现场PUSHDSPUSHAXPUSHBXPUSHSIPUSHDI┆;中断处理内容POPDI;恢复现场POPSIPOPBXPOPAXPOPDSPOP课后答案网ESMOVAL,20H;发一般的中断结束命令MOVDX,8259P0;取8259A偶地址OUTDX,ALIRETwww.hackshp.cn;中断返回INTSUBENDP;远过程定义结束START2:MOVAX,DATA;程序开始,取数据段的段地址送DSMOVDS,AXMOVAL,45H;设置中断向量的系统功能调用的入口条件MOVAH,25HMOVDX,OFFSETINTSUBINT21H;设置中断向量MOVAL,0;OCW1=00H,开放8259A的所有中断第59页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVDX,8259P1;取8259A的奇地址号OUTDX,ALSTI;开中断MOVAX,3100H;终止用户程序并驻留内存的入口条件MOVDX,$–INTSUBINT21H;程序驻留退出CODEENDS;代码段结束ENDSTART1;程序结束答:注释见程序清单的下划线部分。7.368259A在采用边沿触发方式时,为了防止IR端有毛刺产生中断,因此通常也要求有足够的脉冲宽度,这一点由8259A的内部性能所决定。所以,中断控制器的初始化命令字虽用边沿触发,但是,中断请求信号却是某个脉冲信号。你认为,这种情况下,设置边沿触发方式和设置电平触发方式相比,有什么优点?答:电平触发方式时,中断请求信号必须在第一个INTA脉冲结束之前保持高电平,而此时的中断请求信号却是某个脉冲信号,不一定能满足电平触发方式的要求,可能会造成中断请求得不到响应。而此信号能满足边沿触发方式对中断请求信号的要求,可基本保证能得到中断响应(IF=1)。7.37下面是一个8253的初始化程序段。8253的控制口地址为46H,3个计数器端口地址分别为40H、42H、44H。在8253初始化前,先将8259A的所有中断进行屏蔽,8259A的奇地址端口为82H。请对下面程序段加详细注释,并以十进制数表示出各计数器的值。课后答案网INI:CLI;CPU关中断MOVAL,0FFH;8259A屏蔽中断OUTwww.hackshp.cn82H,ALMOVAL,36H;设置计数器0控制字,工作于模式3OUT46H,ALMOVAL,0;设置计数器0的计数初值为4000H=16384OUT40H,ALMOVAL,40HOUT40H,ALMOVAL,54H;设置计数器1控制字,工作于模式2,低8位字节读/写OUT46H,ALMOVAL,18H;设置计数器1的计数初值为18H=24第60页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)OUT42H,ALMOVAL,0A6H;设置计数器2控制字,工作于模式3,高8位字节读/写OUT46H,ALMOVAL,46H;设置计数器2的计数初值为4600H=17920OUT44H,ALMOVAL,80H;修改计数器2的计数初值为8000H=32768OUT44H,AL答:注释见程序清单,计数器初值的十进制值也见注释。7.38下面是一个用8253作为定时器的发音程序,程序中已加了部分注释。请对8253的有关程序段加上注释,并画出整个程序的流程图。8253的控制口地址为46H,3个计数器端口地址分别为40H、42H、44H。8255A的B端口接扬声器驱动电路,B端口的地址为62H。SOUND:PUSHFCLIORDH,DH;DH中为发长音的个数JZK3;如不发长音,则转K3K1:MOVBL,6;如发长音,则置长音计数器CALLBEEL;调用发音程序K2:LOOPK2;两音之间留一点间隙DECDH;长音发完否JNZ课后答案网K1;否,则继续K3:MOVBL,1;如发完长音,则置短音计数器CALLBEEL;调用发音程序K4:LOOPK4www.hackshp.cn;两音之间留一点间隙DECDL;继续发短音吗JNZK3;是,则继续K5:LOOPK5;否,则留一点间隙POPF;标志恢复RET;返回BEEL:MOVAL,B6H;发音子程序开始OUT46H,AL;8253的计数器2工作于模式3MOVAX,533H;计数初值为533HOUT44H,AL;送初值低位MOVAL,AH第61页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)OUT44H,AL;送初值高位INAL,62H;取扬声器驱动信息MOVAH,ALORAL,03;接通扬声器OUT62H,AL;扬声器驱动SUBCX,CX;一次发音时间设定K7:LOOPK7DECBL;BL中为发音计数值JNZK7;如未结束,则继续发音MOVAL,AH;如发音结束,则恢复B端口信息OUT62H,ALRET答:补充的注释见程序清单中的下划线部分。程序流程图如下所示。SOUND开始BEEL开始保护标志,关中断8253计数器2初始化为模式3,计数初值为533HY发长音吗?N取扬声器驱动信息并送AH中保护起来置长音计数器,调发音子程序,并延时接通扬声器并使其发音N课后答案网长音发完吗?Y延时置短音计数器,调发音子程序,并延时Nwww.hackshp.cn音发完了吗?NY短音发完吗?发音结束,关掉扬声器Y延时并恢复标志RET返回RET返回第62页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)第八章模/数和数/模转换8.1什么叫分辨率?什么叫相对转换精度?答:1.在D/A转换时,将最低位增1所引起的增量和最大输入量的比称为分辨率。即:分辨率=1/(2n-1)。2.用绝对转换精度相对于满量程输出的百分数表示的精度即为相对转换精度。有时也用最低位(LSB)的几分之几表示。8.2在T型电阻网络组成的D/A转换器中,设开关K0、K1、K2、K3、K4分别对应一位二进制数,当二进制数据为10110时,流入运算放大器的电流为多少?画出这个T型网络。VVV11VI=REF•N=REF•(10110B)=REF•22=REF。N552R2R2R16R答:1.流入运算放大器的电流I为:(n=5)2.T型网络如下图:Ro-Vo+K0K1K2K3K42R课后答案网RRRRVREFwww.hackshp.cn8.3用带两级数据缓冲器的D/A转换器时,为什么有时要用三条输出指令才完成16位或12位数据转换?答:因为一般第一次将低8位数据送输出低位的第一级数据缓冲器,第二次输出高4位或高8位数据到高位的第一级数据缓冲器。第三次执行一次伪输出,将第一级数据缓冲器的内容打入第二级数据缓冲器从而实现高于8位的D/A转换。因此要用3条输出指令才能完成一次16位或12位数据转换。以避免出现错误的中间结果。8.4使用DAC0832进行数/模转换时,有哪两种方法可对数据进行锁存?第63页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在不锁存状态。第二种方法是使输入寄存器工作在不锁存状态,而DAC寄存器工作在锁存状态。8.5在数字量和模拟量并存的系统中,地线连接时要注意什么问题?答:首先各个模拟地连在一起,各个数字地连在一起;其次模拟地和数字地只能且必须用一个共地点连起来,以防干扰。8.6设计一个电路和相应程序完成一个锯齿波发生器的功能,使锯齿波呈负向增长,并且锯齿波的频率可调。答:①电路如下图所示:数据总线D7~D0REBWR1IOUT1-VoDAC+0832地址总线IOUT2XFERM/IOCSWR2②程序如下:MOVDX,PORTDA;PORTDA为D/A转换器的端口号MOV课后答案网AL,0;初值ROTATE:DECAL;呈负向增长OUTDX,AL;往D/A转换器输出数据CALLwww.hackshp.cnDELAY;延迟JMPROTATEDELAY:MOVCX,DATA;往CX中送延迟常数,修改DATA即可改变周期DELAY1:LOOPDELAY1RET8.7什么叫模/数转换精度?什么叫转换速率?什么叫分辨率?答:1.反映A/D转换器的实际输出接近理想输出的精确程度叫模/数转换精度。2.完成一次A/D转换所需要的时间的倒数叫转换速率。3.A/D转换器能够分辨最小的量化信号的能力叫分辨率。8.8参考《微型计算机技术及应用》一书中图8.12说明计数式A/D转换的工作原理。第64页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:首先启动信号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转换的原理是什么?START答:一开始,电路对输入的未知模拟量进行固定时初始化,试探位BL从最高位开始间的积分,然后转换为对标准电压进行反向积(BL)←80H,试探次数(CX)←08H分。反向积分到一定时候,便返回起始值。因此对标准电压的反向积分时间T正比于输入模计算试探值并送BH保护拟电压Vi,Vi越大,T越长。只要用标准的试探值→D/A转换,接着高频时钟频率测定反向积分花费的时间,就可读取比较器的比较结果得到输入模拟电压所对应的数字量,即实现了YA/D转换。试探值小了吗?N8.10参考《微型计算机技术及应用》一书中图8.14说明试探值的该试探位清0→BH保护逐次逼近式A/D转换的工作原理。答:当启动信号由高电平变为低电平时课后答案网,逐次逼近试探位右移一位,取试探值→AL寄存器清0,这时,D/A转换器输出电压VO也为0,当启动信号变为高电平时,转换开始,试探结束了吗?同时,逐次逼近寄存器进行计数。逐次逼近寄Ywww.hackshp.cn输出转换结果存器工作时与普通计数器不同,它不是从低位往高位逐一进行计数和进位,而是从最高位开始,通过设置试探值来进行计数。具体讲,在第一个时钟脉冲时,控制电路把最高位送到逐次逼近寄存器,使它的输出为10000000B,这个输出数字一出现,D/A转换器的输出电压VO就成为满量程的128/255。这时,如果VO大于Vi,那么,作为比较器的运算放大器的输出就成为低电平,控制电路据此清除逐次逼近寄存器的最高位;如果VO小于或等于Vi,则比较器输出高电平,控制电路使最高位的1保留下来。如果最高位被保留下来,那么,逐次逼近寄存器的内容为10000000B,下一个时钟脉冲使次高位D6为1。于是,逐次逼近寄存器的值为11000000B,D/A转换器的输出电压VO到达满量程的192/255。此后,如果VO大于Vi,则比较器输出为低电平,从而使次高位D6复位;如果VO小于或等于Vi,第65页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)则比较器输出高电平,从而保留次高位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转换器。第九章键盘和LEDLLEDED显示器9.1利用行扫描法来识别闭合键的工作原理是什么?为什么在识别一个键前,先快速检查键盘www.hackshp.cn中是否有键按下?快速识别有无闭合键的方法是什么?答:1.从第0行开始扫描,看是否是该行的键闭合,直至最后一行扫描结束。(每扫一行输入列值,检查此行是否有键闭合,若有键闭合则转去识别该键;若无键闭合,则扫描下一行……)2.为了提高程序运行的速度,在无键按下时无需进行行扫描。3.先使所有各行同时为低电位,再检查是否有列线也处于低电位。若有某列线处于低电位,则说明必有键按下,否则无键按下。9.2设计一个用行扫描法识别闭合键的扫描程序,设键盘上有4×5个键,并行口A接四根行线,并行口B接五根列线,两个端口的地址分别为PORTA、PORTB。第66页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:START:MOVAL,00H;判断是否有键按下的程序MOVDX,PORTAOUTDX,AL;往4根行线输出低电平MOVDX,PORTBINAL,DX;读取列值ANDAL,1FH;列值只有低5位有效CMPAL,1FH;是否有列线处于0电位JZSTART;无闭合键,循环等待CALLDELAY;有闭合键,则延时20ms消抖SCAN:MOVBL,0;键号初值为0MOVCL,0FEH;送扫描初值MOVBH,4;计数值为行数(4行)SCAN1:MOVAL,CLMOVDX,PORTAOUTDX,AL;扫描一行RCLAL,1;修改扫描值MOVCL,ALMOVDX,PORTBINAL,DX;读取列值ANDAL,1FH;列值只有低5位有效CMP课后答案网AL,1FH;是否有列线处于0电位JNZSCAN2;有列线接地,则转SCAN2MOVAL,BL;如无列线接地,则键号=键号+列数/每行ADDwww.hackshp.cnAL,5MOVBL,ALDECBH;扫描下一行JNZSCAN1;未扫描完,继续扫描JMPDONE;已扫完,无键按下,则转DONESCAN2:RCRAL,1;如此列接地则转NEXTJNCNEXTINCBLJMPSCAN2;如未找到接地的列线,则转SCAN2继续寻找第67页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)NEXT:┆;键命令处理程序设A端口工作在输出方式B端口工作在输入方式DONE:┆;后续处理程序往行线输出全09.3叙述行反转法的基本工作原理,画出行反读取列值转法的程序流程。N有闭合键吗?答:1.行反转法的基本工作原理:将行线Y接一个并行口,使其工作于输出方保留列值式;将列线接一个并行口,使其工延迟20ms作于输入方式;程序使CPU通过输设A端口工作在输入方式B端口工作在输出方式出口往各行线上全送低电平,然后读入列线的值。若此时有某个键被输出刚才读得的列值按下,则必定会使某列线值为0。然读取行值后程序将两个并行端口的输入/输出设置键码值方式调换,并将刚才读得的列线值从列线所接的并行口输出,再读取与表中的码符合Y行线的输入值,在闭合键所在的行吗?线上的值必定为0。这样当一个键被N转键命按下时,必定可以读得唯一的行值修改表地址,修改计数值令处理和列值。N课后答案网表查完了吗?2.程序流程如右:Y9.4连锁法和巡回发识别重建的基本思想是什么?www.hackshp.cn答:①连锁法识别重建的基本思想是:在所有键释放后,只承认此后闭合的第一个键,对此键闭合时按下的其他键均不作识别,直到所有键释放以后,才读入下一个键。②巡回法识别重建的基本思想是:等前面所识别的键被释放以后,就可以对其他闭合键作识别。9.5用连锁法识别重键时,对《微型计算机技术及应用》一书的图9.8中的三种重键情况分别如何处理?看懂图8.9的流程,并说明按标准的连锁法,此流程应如何修改?答:1.图9.8(a),只读入A键;图9.8(b),标准连锁法也只读入A键;图9.8(c)则无效,两键都不读入。2.标准连锁法的流程可按书362页图9.9来修改,即将等待释放的一部分改为等待所有键释放即可。方法是:在读进列值前加一个“使所有行为低电平”既可以了。第68页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)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:MOVAL,00HMOVDX,RPORT;取行端口号OUTDX,AL;使所有各行为低电平MOVDX,LPORT;取列端口号INAL,DX;读入列值CMPAL,0FFH;判断是否有键闭合JZQUIT;无键闭合,则退出CALLDELAY;有键闭合,则延时消抖MOVAL,0FEH;使第0行为低电平MOVCX,08H;总行数送CXKEY:MOVDX,RPORTOUTDX,AL;使所选的一行为低电平PUSHAX;保存行值MOVDX,LPORTINAL,DX;读入列值CMP课后答案网AL,0FFH;所选行上有闭合键吗?JNZYE;有键闭合,则转译码程序POPAX;无键闭合,恢复行值SHLwww.hackshp.cnAL,1;选择扫描下一行LOOPKEYJMPQUIT;扫描结束则退出YE:┆;键译码程序PUSHAX;AX中为键值KEY1:MOVDX,LPORT;读入列值INAL,DXCMPAL,0FFH;测试键是否已释放JNZKEY1;如未释放则等待CALLDELAY;已释放则再去抖动POPAX;AX中为键值第69页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)┆;键命令处理QUIT:RET;返回9.7在LED显示系统中,采用硬件方法译码和采用软件方法译码各有什么优缺点?答:使用方便,不占用CPU过多的时间是硬件译码方法的优点,其缺点是使用局限性大(如有的硬件只能对BCD码进行译码等),成型电路改造麻烦。软件译码正好相反。9.8画一个实现4位显示的扫描和驱动电路,LED为共阴极器件。然后画出LED显示程序流程图。答:1.实现4位显示的扫描和驱动电路见下图。2.LED显示程序流程图也见下页图。9.9设计计时器软件时,可以采用哪几种方案?哪一种方案最好?为什么在中断处理程序中包含的模块越少越容易调试?答:1.①显示程序和初始化程序等放在主程序中,键盘处理程序和计时程序放在中断处理程序中。②显示程序、键盘处理程序和初始化程序等都放在主程序中,计时程序放在中断处理程序中。③键盘处理程序等作为主程序,显示和计时程序作为中断处理程序2.第③种方案最好。因其软件设计较为简单,显示实现较方便。课后答案网3.模块越少,程序越简单,调试自然越容易。www.hackshp.cn第70页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)+5V指向缓冲区首址取显示位指针关显示取要显示的数段驱动将数变为段码修改缓冲区指针和位段码送到段控制通道码位码送到位控制通道……延迟一定时间N课后答案网是否是最右边一位?Dpgfedcba……Ywww.hackshp.cn阴极退出位驱动第71页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)第十章CRTCCRTRT技术10.1显示器控制系统中,字符发生器、显示存储器分别起什么作用?字符发生器是怎样选中某个单元的?答:1.字符发生器的作用是存放并提供每个ASCII码的显示字型码。显示存储器的作用是存放由CPU送来的显示字符的ASCII码和属性码或图形点阵,并能由CRT控制器和CPU读取。2.字符发生器的单元选址由该字符的ASCII码和字符行的扫描线序号来选中的。10.2将一个字符显示到屏幕上,要进行什么操作?答:①访问显存,找到该字符的ASCII码。②顺序多次访问字符发生器,逐次读取该字符对应每条水平扫描线上的点阵码。③将并行格式的点阵码送到视频移位寄存器。④移位寄存器用串行方式将视频串行数据流送到显示器。10.3在IBMPC/XT系统中,彩色显示器的显示存储器空间在什么地方?黑白显示器的显示存储器空间呢?分别写出这两个显示存储区的首尾地址和空间长度。答:1.彩显在B8000H~BBFFFH单元;2.黑白在B0000H~B0FFFH课后答案网单元;3.彩色图形方式为:B8000H~B9F3FH、打印输出程序BA000H~BBF3FH共16000字节(16KB)。8255A初始化黑白为:B0000H~B0F3FH共4000字节(4KB)。www.hackshp.cnPC7输出1,使STB无效第十一章打印机接口技术Y输入PB0,BUSY?11.1打印机和主机接口方式有哪两大类?衡量一台N打印机的主要指标有哪些?从内存缓冲区取打印字符,通过8255A的PA口输出答:1.打印机和主机接口有并行和串行两大类。2.主要指标有:接收的是串行数据还是并行PC7输出0,使STB有效数据、字符打印还是图形打印、可接收的字符种类、打印行缓冲器和输入缓冲器、PC7输出1,使STB无效字模形式及单向打印还是双向打印等指N标。数据打印完了吗?Y第72页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)11.2一个打印机和主机之间的信号有哪些?数据信号中的可打印字符和控制字符是由打印机内部哪一部分电路处理的?答:1.有数据信号、选通信号、回答信号和忙信号。2.两类字符由输入控制逻辑电路进行判断。控制信号由其送往时序电路和打印机控制逻辑电路。可打印字符再送往打印行缓冲器。11.3什么叫Centronic标准?在这一标准中,哪些信号用来指示打印机的状态?哪些信号用来控制打印机工作?最重要的控制信号和状态信号是什么?答:1.由美国Centronic公司制定的打印机并行接口的36芯D型插座的接口信号标准。2.用来指示打印机状态的信号有:ACKNLG、BUSY、PE、SLCT、ERROR。3.控制打印机工作的信号有:STROBE、AUTOFEEDXT、INIT、SLCTIN。4.最重要的控制信号是:STROBE;最重要的状态信号是:BUSY。11.4根据《微型计算机技术及应用》一书的图11.4,设计打印机驱动程序的详细流程图。答:流程图如右图所示:11.5串行打印机中,通过什么方法来解决速度较快的主机和速度较慢的打印机之间的协调工作问题?为什么“输入缓冲器满信号”并不是在缓冲器装满时才发出?答:1.加入较大容量的输入缓冲器,且在输入缓冲器将要装满时,打印机向主机发出输入缓冲器满信号,主机因此停止发送数据到打印机。2.避免在全满时,主机发送的数据丢失。以及在主机未及时向打印机发送数据时,打印机中仍然有数据打印。课后答案网11.6在IBMPC/XT系统中,主机和打印机通过哪几个端口地址相联系?主机往打印机可发哪几种命令?答:1.端口地址为378H~37AHwww.hackshp.cn。2.5种命令。即:数据写入命令、数据读出命令、控制字写入命令、控制字读出命令、状态字读出命令。11.7在IBMPC/XT系统中,打印机适配器的控制字和状态字格式分别是什么?答:①控制字格式:只用了低5位。D7D6D5D4D3D2D1D0允许中断联机初始化自动加换行选通IRQENSLCTININITAUTOFDSTROBE②状态字格式:只用了高5位。D7D6D5D4D3D2D1D0第73页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)忙应答纸用完联机状态打印出错ACKPESLCTERRORBUSY11.8主机和打印机用中断方式和查询方式时,具体分别用怎样的过程来实现字符输出?答:①中断方式:每当打印机接收一个字符后,使用ACK信号向主机发出中断请求,主机收到此信号且IF=1时,响应中断,从而往打印机发送下一个字符。②查询方式:主机不停地测试打印机的“忙”信号。当忙时,主机必须等待;当“忙”信号消失时,主机便往打印机输出一个字符,并且发出选通信号STB。11.9在IBMPC/XT系统中,BIOS的17H中断提供了哪些打印功能?答:AH=0时打印AL中的字符,AH=1时初始化打印机,AH=2时读打印机状态。并且都由AH返回当前状态字。11.10下面是一个查询方式下的打印机控制程序,进入程序时,AX中为要打印的字符,退出PRI近过程开始时,AH中为状态,AL中为打印字符,画出保护现场下面程序流程,并说明AH中的状态所表示等待时间常数→BL的含义,再说明选通信号为怎样的波形。保护并输出AX中的打印字符(AL)PRIPROCNEARDX改为指向打印机的状态控制口PUSHDXPUSHCX置循环初值CX=0,循环65536次PUSH课后答案网BX读取状态并送AH保存MOVBL,0FFH;BL中为N打印机等打印机“忙”吗?输出选Y;待时间Nwww.hackshp.cn通信号,循环结束了吗?常数先使控Y等待时间常数BL–1→BLMOVDX,PORT;PORT为制口打印机数D0=1,等待时间到吗?N再使控Y;据口地置超时标志AH.0=1制口址恢复打印字符并送ALPUSHAX;保存打恢复现场并RET印字符OUTDX,AL;ALPRI近过程结束中的打印字符;送打印机第74页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)INCDX;指向状态口TEST1:SUBCX,CX;设置循环初值,循;环65536次TESTATE:INAL,DX;取状态MOVAH,ALTESTAL,80H;检测状态JNZAAA;打印机不忙,;则转AAALOOPTESTATE;打印机忙,;则再测DECBL;等待时间常;数减1JNZTEST1;时间未到,则;再检测ORAH,1;如超时等待,则置出错标志JMPBBB;退出AAA:MOVAL,0DH;使D0位为1OUTDX,AL;输出选通信号MOVAL,0CH;使D0位为0,选通信号复位OUTDX,ALBBB:POP课后答案网DX;恢复打印字符MOVAL,DL;打印字符送ALPOPBXPOPCXwww.hackshp.cnPOPDXRET;返回PRIENDP答:1.程序流程图如上页右图所示:2.AH的状态:AH.7位“忙”,AH.0位“超时出错”。3.选通信号是一个正脉冲信号11.11以下是IBMPC/XT系统的打印机服务程序的一部分,其中省去了从打印缓冲区取数据的部分。378H为打印机数据口地址,37AH为打印机控制口地址,20H为8259A的偶地址端口地址。请为下列程序加上注释。PRIPROCFAR;打印的中断服务第75页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com);子程序,是一个远;过程STI;开中断PUSHAX;保护现场PUSHDXPUSHBX┆;从打印缓冲区取数据送入ALMOVDX,378H;指向打印机数据口OUTDX,AL;输出打印字符MOVDX,37AH;指向打印机控制口MOVAL,1DH;输出选通信号(先使D0位为1)OUTDX,ALMOVAL,1CH;输出选通信号(再使D0位为0)OUTDX,AL┆;修改缓冲区指针,指向下一个单元MOVAL,20H;向8259A发一般的中断结束命令OUT20H,ALPOPBX;恢复现场POPDXPOPAXIRET课后答案网;中断返回PRIENDP;中断处理程序结束答:注释见程序的下划线部分。第十二章www.hackshp.cn软盘、硬盘和光盘子系统(略)第十三章总线13.1什么叫内部总线?什么叫计算机外部总线?通常讲的总线是指哪一种?答:1.位于芯片内部的总线叫内部总线。2.位于芯片外部连接各部件的总线叫外部总线。3.通常讲的总线是指外部总线。13.2计算机系统采用总线结构有什么优点?局部总线和系统总线有什么差别?局部总线在多处理器系统中为什么显得特别重要?第76页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:1.优点在于凡是同一种总线标准的模块可直接与该总线连接,扩展及应用非常方便。2.局部总线是指主机板内部和其他插件板内部的总线,其上挂有局部的存储器和局部的I/O口。而系统总线是指连接各插件板的总线,其上挂有公共存储器和公共的输入/输出接口。3.可以把很大一部分存储器读/写操作和输入/输出操作通过局部总线来完成。只有在访问公共存储器和公共输入/输出接口时,才用系统总线。于是,对系统总线的使用次数便大大减少,避免了“堵塞”现象,并且还提供了各个子系统并行工作的条件。13.3MULTIBUS有什么特点?在MULTIBUS中,P1插头信号中有哪些总线控制信号?答:1.MULTIBUS有如下特点:1既支持8位,也支持16位的数据总线;若为32位数据总线,则需用MULTIBUS–II。2很容易组成多机系统。第3版答案:1、独立于CPU3在总线的各主模块板上都有总线控制器。2、灵活性强3、可靠性和抗干扰性好4可以有8级中断响应信号。5信号线全部用负逻辑定义。2.P1插头的总线控制信号有:BCLK、BPRN、BPRO、BUSY、BREQ和CBRQ。另外,还有一个LOCK。13.4在MULTIBUS系统中,读操作过程和写操作过程的工作时序如何?请用时序图和文字进行说明。答:①读操作过程:主模块首先输出地址,然后发出读命令课后答案网MRDC(存储器读命令)或者IORC(I/O读命令),从模块接到命令后,将数据置于数据总线,然后发送传输响应信号XACK。当主模块接收到XACK信号后,便选通输入,并撤销MRDC或IORC,随后,XACK也消失。时序图见书www.hackshp.cn457页图13.6所示。②写操作过程:主模块送出地址的同时,也送出数据,然后发出写命令MWTC(存储器写命令)或者IOWC(I/O写命令),此后,从模块接收数据,并向主模块发出传输响应信号XACK。当主模块接收到XACK信号后,便撤消写命令,并撤消地址和数据。时序图见书457页图13.7所示。13.5在MULTIBUS中,为什么要用字节交换缓冲器?进行字节交换的原理是什么?答:1.因为MULTIBUS中,可以允许16位模块和8位模块混合使用。2.当8位模块和16位模块(其上有字节交换缓冲器)交换数据时,16位模块通过字节交换缓冲器,将高8位的数据输出到DAT7~DAT0上,再通过DAT7~DAT0进行数据传输。第77页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)13.6当系统中多个主模块同时请求使用总线时,采用什么方式解决这个问题?答:采用总线仲裁方式。13.7说明串行的总线仲裁方式和并行的总线仲裁方式使用场合的区别。答:串行的总线仲裁方式适用于主模块数目较少的系统中。并行的总线仲裁方式适用于较多主模块的系统中。第十四章主机系统的结构和工作原理14.1IBMPC/XT系统板的电路分为哪五个功能块?它的I/O空间为多少?内存寻址空间为多少?IBMPC/XT的中断源最多可为多少?答:1.CPU子系统、接口部件子系统、总线、ROM子系统和RAM子系统五个功能块。2.IBMPC/XT的最大I/O空间为1K。3.内存寻址空间为1M字节。4.最多可为256个中断源。14.2IBMPC/XT系统中,8088工作于最大模式还是最小模式?在此模式下,有什么特点?答:1.最大模式。2.在最大模式下,需要总线控制器8288把系统的控制信号送到总线上去。另外,允许使用8087协处理器等。14.3IBMPC/XT的时钟信号频率为多少?一个基本总线周期由多少时钟周期组成?基本总线课后答案网周期和时钟信号之间是什么关系?答:1.IBMPC/XT的时钟信号频率为:4.77MHz。2.一个基本总线周期由www.hackshp.cn4个时钟周期组成。3.时钟信号是CPU的基本时间计量单位;基本总线周期包含4个时钟周期,称为4个状态,即:T1状态、T2状态、T3状态、T4状态。14.4IBMPC/XT系统板上有哪些接口部件?DMA器件8237A–5的4个通道分别作什么用途?用户开发程序时,可以用哪个DMA通道?8253–5的3个定时器/计数器是怎样使用的?中断控制器8259A的八级中断中哪些被系统用了,哪些提供给用户使用?答:1.8237A–5、8253–5、8255A–5、8259A各一片。2.DMA的通道0用于RAM刷新,通道1为用户保留,通道2用于软驱,通道3用于硬驱。3.用户用DMA的通道1。第78页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)4.计数器0作为定时器,为计时电子钟提供恒定时间标准;计数器1为DMA通道0产生RAM刷新请求;计数器2用于产生扬声器的音调。5.8259A的IR0和IR1被系统占用。6.8259A的IR2~IR7供用户使用。14.5在什么情况下,系统中必须用到总线控制器8288?概括地讲,8288有什么功能?如果一个8086/8088系统中不使用8288,那么,应该怎样得到下列信号:MEMW、MEMR、IOW、IOR、ALE?画出简单线路图以表明这4个信号的来源。答:1.当8086/8088CPU工作于最大模式时,必须用到8288。2.功能:根据CPU执行指令时提供的状态信号来建立控制时序,据此输出读/写控制命令。3.ALE由8086/8088CPU的25脚直接提供(最小模式)。对8086CPU而言:信号得到方法如下。M/IOM/IOIORIOWRDWRM/IOM/IOMRMWRDWR14.68086/8088系统工作于最大模式时和最小模式时课后答案网,CPU在连接上有什么差别?此时CPU的输出信号有什么差别?答:1.最大模式下必须使用总线控制器8288,最小模式确不能用它。另外,最大模式时MIN/MAX必须接地,最小模式时www.hackshp.cnMIN/MAX必须接+5V。2.CPU只有24~31脚的输出控制信号发生变化:24~25脚的INTA→QS1,ALE→QS0;26、27、28脚的DEN、DT/R、M/IO(或M/IO)变为S0~S2;29脚的WR→LOCK;30、31脚的HLDA、HOLD变为RQ/GT1、RQ/GT0。14.7IBMPC/XT系统中,有几个时钟信号?想一想,为什么要用多个时钟信号?它们之间有何联系?是否可以用不同的晶振来产生这些信号呢?答:1.有3个时钟信号:CLK88、OSC、PCLK。2.因为系统中有很多部件需要时钟,而频率却不同,所以需要多个时钟信号。3.一般来说不可以,因误差情况不同。第79页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)14.8CPU插入等待状态TW时,READY、DMAWAIT、RDY/WAIT信号分别处于什么电平?在物理意义上,此时说明了一种什么情况?答:1.READY=0、DMAWAIT=0、RDY/WAIT=1。2.存储器或外设的速度较慢。14.9当DMA传输时,IBMPC/XT的总线控制器8288停止工作,在信号连接上,是怎样实现这个控制功能的?答:8288的AEN接系统的AENBRD,CEN接系统的AEN"。在DMA传输时,AENBRD=1,AEN"=0,因此8288停止工作。14.10IBMPC/XT中,通过怎样的线路连接使系统地址总线和系统数据总线上同时存在地址信息和数据信息?答:通过地址锁存器在ALE下降沿时锁存地址并送到地址总线,在T2、T3状态时,数据信息就会同时存在于数据总线上。14.11等待逻辑电路的输入信号分为哪两组?它们分别和什么操作相关?叙述CPU插入一个TW状态的过程,再叙述DMA控制器插入一个SW状态的过程。当需要插入多个TW或SW时,线路上应采取什么措施?答:1.一是对I/O进行访问的DACK0BRD、IOR和IOW,二是用于对动态RAM刷新的信号AENBRD和MEMR。2.第一组信号实现课后答案网I/O读操作、I/O写操作。第二组实现动态RAM刷新。3.I/O读功能、I/O写功能和DMA刷新功能中的任一功能在实现时,都会使触发器U70置1,使Q端即RDY/WAIT变为高电平;在下一个时钟来到时,又把U88的Q端置0,由于Q接U70www.hackshp.cn的R端,因此又把U70置0。这样,在RDY/WAIT端得到宽度为1个时钟周期的正脉冲,此正脉冲送到8284A的AEN1端,通过8284A使CPU插入一个TW状态。U88的另一路输出信号为RDYTODMA,这是接到DMA控制器8237A–5的。DMA控制器的基本传送周期为4个周期,它和CPU工作时的情况相似,如果存储器或I/O设备的速度较慢,则通过信号RDYTODMA插入一个SW状态。4.可以附加等待电路,由此电路产生低电平的I/OCHRDY信号,使U70置1。这样RDY/WAIT端出现高电平,便可以插入任意多个等待状态。直到设备得到足够时间可完成数据传送后,使I/OCHRDY变为高电平,才结束等待状态。14.12由片选信号译码器U45(74LS138)的连接说明8237A–5的端口地址为什么在00~1FH范围中,同理再说明其他接口芯片的端口地址范围。第80页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)G2A—A9、G2B—A答:因为U45(74LS138)的8、C—A7、B—A6、A—A5。因此,工作时若使U45的Y0~Y7有一个输出低电平,必须使A9=0,A8=0。又因为8237A–5的CS接Y0,因此A7、A6、A5也必须为000,因此Y0的地址为0000000000B~0000011111B即00~1FH。其他接口的端口分别接在UY1Y745的~上,其具体端口地址见书473页表142所示。14.138237A–5的页面寄存器有什么作用?在使用8237A–5时,对页面寄存器应用怎样的指令进行设置?它的端口地址是什么?答:1.页面地址用于提供DMA访问时不可缺少的最高4位地址A19~A16。而DMA控制器本身的地址只有16位,无法提供A19~A16。2.用输出指令进行设置。3.4组页面寄存器对应的地址是80H(CH0),83H(CH1),81H(CH2),82H(CH3)。14.14IBMPC/XT的非屏蔽中断由哪几种原因引起?说明它们引起非屏蔽中断的原理。答:1.一是系统板上的动态RAM有奇/偶校验错误,二是I/O通道的扩展板出现奇/偶校验错误,三是协处理器8087有中断请求。2.原理见书475页所示。14.15中断允许触发器的功能是什么?为什么一定要在系统中安排一个中断允许触发器?在系统的自检程序中,是怎样使中断触发器开始起作用的?说明这一过程并用指令表示。答:1.对送到8088CPU的NMI中断提供屏蔽的手段。2.因为刚加电时,课后答案网RAM中必然为杂乱的随机信息,此时中断允许触发器已被RESET信号复位,禁止NMI中断。否则一加电就产生不必要的NMI中断而引起错误。3.由校验程序用指令对NMI中断屏蔽触发器置位,使其起作用。4.MOVALwww.hackshp.cn,80HOUT0A0H,AL;置位NMI中断屏蔽触发器14.16在IBMPC/XT中,8259A的工作方式具体是怎样的?请用程序段来表示8259A的初始化过程。答:1.采用全嵌套方式,IR0的级别最高,IR7最低;ICW2为08H,这样8个中断类型码为08H~0FH;中断请求信号采用边沿触发方式;用普通的中断结束方式;用普通屏蔽方式。2.MOVAL,13H;设置ICW1,单片,边沿触发,需要ICW4OUT20H,AL;写入8259A的偶地址端口MOVAL,08H;设置ICW2OUT21H,AL;写入8259A的奇地址端口第81页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)MOVAL,01H;设置ICW4OUT21H,AL;写入8259A的奇地址端口MOVAL,08H;设置OCW3,普通屏蔽方式OUT20H,AL;写入8259A的偶地址端口14.17IBMPC/XT系统中,8255A–5在系统处于自检方式GNDB1"A1"I/OCHCK时控制字为89H,普通工作方式时控制字为99H,RESETDRVD7这两个控制字分别对应了哪些功能?+5VD6答:89H对应的是:PortA为方式0输出,PortB为IRQ2D5D4方式0输出,PortC为方式0输入。99H对应D3的是:PortA为方式0输入,PortB为方式0D2输出,PortC为方式0输入。D1D014.18IBMPC/XT系统中,通过什么电路来读取DIP开关GNDB10"A10"I/OCHRDYMEMWAEN的设置?MWMRA19答:系统配置开关的状态通过PC3~PC0读入。IOWA18IORA1714.19如果一个设计人员要设计一块接口板,通过此接口A16板来扩展IBMPC/XT的功能,方案考虑时,决定用A15A14系统的中断功能,中断请求信号由接口板供给。请A13你为他画出这块接口板的总线信号。A12答:接口板的总线信号如右图所示。课后答案网CLOCKB20"A20"A11A1014.20IBMPC/XT系统中,RAM区、ROM区、系统保留焊A9元区分别在什么范围?系统从加电到执行BIOS程序盘A8件面A7面的大致过程是怎样的?www.hackshp.cn答:1.RAM区在00000~9FFFFH范围,系统保留区在A0000~BFFFFH范围,ROM区在C0000H~FFFFFH范围。2.8086/8088加电后被复位,CS=FFFFH,IP=0000H,CPU就会自动转到FFFF0H处执行一条无条件转移指令,转去执行BIOS程序。14.21IBMPC/XT系统中,数据收发器是如何控制数据从I/O接口、ROM或系统扩展板往CPU传送的?又如何控制数据从CPU送往这些部件?答:1.数据收发器有一个方向控制端DIR,DIR信号由下列三组信号通过或非门U23组合得到,当三组信号中任何1组为1时,都会使DIR成为低电平:A8·A9·IOR;ROMADDRSEL=CS6+CS7;INTA+CARDSLCTD。当DIR为低电平时,数据收第82页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)发器便允许这3组信号管理的区域将数据传输到CPU。第一组信号是用来读I/O接口芯片的,第二组信号用来读系统板的ROM,第三组信号在中断响应或者J8槽中的扩展板被选中时处于有效电平。2.如果这3组信号都没有出现,则数据收发器的DIR为高电平,此时,如果AENBRD为低电平,则数据收发器使数据从CPU送往这个区域的局部总线。14.22IBMPC/XT系统中,动态RAM的刷新过程是怎样的?刷新时,为什么外部数据总线上不会出现RAM中读出的数据?答:1.将8253–5的计数器1用于刷新定时器,每隔15.12μs便向8237A–5的通道0发一次DMA请求,DMA的通道0响应后即申请总线控制权,然后发出4164刷新所要的行地址(低7位地址),并使所有的RAS有效,完成一次刷新操作。2.刷新时,只用了行地址(低7位地址)和行地址选通信号RAS,而不用列地址选通信号CAS。因此,动态RAM刷新时不会把数据送到外部数据总线上。14.23RAM读/写控制电路在什么情况下产生行地址选通信号?在电路上是如何实现的?答:1.产生行选信号有三个条件:1存储器读命令XMEMR或写命令XMEMW有一个有效,从而使U56的G1端为高电平。28237A–5的DMA通道0来执行DMA操作,从而使DACK0BRD为高电平,通过反相器UG2A课后答案网71又使为低电平。3访问系统板上的RAM时,U44的Q0端输出高电平,此时,DACK0BRD为高电平,这样,通过U24使G2B为低电平。上述三个条件都满足时,www.hackshp.cnU56产生译码信号,再由或门U55产生行地址选通信号RAS3~RAS0。2.电路实现上面已介绍过了。14.24IBMPC/XT系统中,用什么信号产生列选信号?说明列选信号电路中延迟线的作用。答:1.DACK0BRD为高电平使GG2A1为高电平;RAMADDRSEL为低电平使为低电平;XMEMR和XMEMW有一个为低电平使G2B为低电平;才能使U42产生列地址选通信号。2.延迟线的作用就是为了在写操作过程中等待生成奇/偶校验位,然后和数据本身一起写进存储器。第83页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)14.25对IBMPC/XT系统进行RAM扩展时,要做哪些工作?要注意什么?以扩展256K为例进行具体说明。答:1.设置DIP开关的低4位,使扩展RAM的最低地址为40000H。即A19~A16=0100B,所以DIP开关的第2位断开,1、3、4位闭合。要设置DIP开关的高4位,使其对应扩展板RAM容量(若开关8闭合则为256KB)。2.要注意避免扩展板RAM的地址(最低位地址处)与系统板RAM地址重叠。3.上面1也已用256K为例作了说明。14.26IBMPC/XT系统通过ROM中的一个字节来标识自己的型号,此字节地址为F000:FFFEH,如代码为FF—表示原装PC机FE—表示为XT机FD—表示PC兼容机FC—表示为AT机阅读下列程序,并在此基础上编写一程序,实现如下功能:读出F000:FFFEH中内容,并据此显示出此系统的型号,如“ThisisAT”。START:PUSHDS;保护段寄存器PUSHBXMOVBX,0F000H;段地址为F000HMOVDS,BXMOV课后答案网BX,0FFFEH;偏移量为FFFEHMOVAL,[BX];型号代码在AL中POPBXPOPDSRETwww.hackshp.cn答:设原装PC机用“IBMPC”表示;XT机就用“XT”表示;PC兼容机就用“PC”表示;AT机用“AT”表示。一样也不是,则用“NOONE!”表示。程序如下:STAT:JMPDISPDISPMESDB‘Thisis’DISPME1DB6DUP(20H),‘$’;20H为空格的ASCII码DISP:CALLSTART;取计算机型号MOVBX,OFFSETDISPME1CMPAL,0FFH;是原装PC机吗?JNZDISP1MOVBYTEPTR[BX],‘I’;是原装PC机,填‘IBMPC’供显第84页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)示INCBXMOVBYTEPTR[BX],‘B’INCBXMOVBYTEPTR[BX],‘M’INCBX;填入一个空格INCBXMOVBYTEPTR[BX],‘P’INCBXMOVBYTEPTR[BX],‘C’JMPDISPLAY;转显示DISP1:CMPAL,0FEH;是XT机吗?JNZDISP2MOVBYTEPTR[BX],‘X’;是XT机,填‘XT’供显示INCBXMOVBYTEPTR[BX],‘T’JMPDISPLAYDISP2:CMPAL,0FDH;是兼容PC机吗?JNZDISP3MOVBYTEPTR[BX],‘P’;是兼容PC机,填‘PC’供显示INCBX课后答案网MOVBYTEPTR[BX],‘C’JMPDISPLAYDISP3:CMPAL,0FCH;是AT机吗?JNZwww.hackshp.cnDISP4MOVBYTEPTR[BX],‘A’;是AT机,填‘AT’供显示INCBXMOVBYTEPTR[BX],‘T’JMPDISPLAYDISP4:MOVBYTEPTR[BX],‘N’;一样也不是,填‘NOONE’供显示INCBXMOVBYTEPTR[BX],‘O’INCBXINCBXMOVBYTEPTR[BX],‘O’第85页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)INCBXMOVBYTEPTR[BX],‘N’INCBXMOVBYTEPTR[BX],‘E’DISPLAY:MOVAH,09H;显示程序,显示‘Thisis……’MOVDX,OFFSETDISPMESINT21HRET第十五章微型机操作系统15.1操作系统的功能是什么?它和监控程序有什么区别?系统软件主要指哪些?衡量一个操作系统的功能时,主要看什么功能?答:1.操作系统的功能是负责管理计算机的所有资源,协调计算机的各种操作。2.监控程序是操作系统中的一个输入/输出模块,是操作系统的一个子集。负责对键盘、显示器及一部分输入/输出功能的管理,往往具有针对性。而操作系统则提供所有的I/O管理,并能管理磁盘,且有各种功能协调。应用较为广泛,适应性强。3.系统软件包括:操作系统、编辑程序、汇编程序、编译程序、连接程序、调试程序等一系列系统实用程序。4.主要看操作系统能管理的用户数和作业数。15.2MS–DOS有哪三个主要模块?它们分别执行什么功能?互相之间的关系是什么?课后答案网答:1.基本输入/输出模块BIOS;磁盘管理模块(IBMDOS.COM);命令处理模块(COMMAND.COM)。2.①基本输入/输出模块的功能是实现对输入www.hackshp.cn/输出设备的管理;②磁盘管理模块的主要功能是实现磁盘文件的管理;③命令处理模块的功能是接收、识别和处理键盘命令。3.它们之间可以单向调用。即磁盘管理模块只能调用基本输入/输出模块,命令处理模块可调用另两个模块,反过来不行。15.3MS–DOS的基本输入/输出模块主要由哪两部分组成?它们分别包含了哪些程序块?想一想,为什么必须把输入/输出模块的一部分放在ROM中?能不能将输入/输出模块全部放在磁盘中?答:1.由ROMBIOS和IBMBIO.COM两部分组成。2.ROMBIOS包括系统测试程序,一部分中断处理程序和相应的中断向量装配程序,还有初始化引导程序。第86页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)IBMBIO.COM包含了一系列输入/输出驱动程序,及其中断向量的装配程序。3.因为计算机启动复位后必须从内存的FFFF0H(8086/8088系统)开始执行程序,而不能从其它地方运行程序。其它地方的程序要运行也必须由ROM中的程序将其装配到内存中才能执行。4.不能将输入/输出模块全部放在磁盘中。15.4磁盘管理模块由哪两部分组成?具体叙述这两部分程序的功能。答:1.由“系统进一步设置程序”和“系统功能调用程序”两部分组成。2.①系统进一步设置程序,完成的类型为20H~27H的中断向量设置,并为每个磁盘驱动器建立一个磁盘参数表。②系统功能调用程序:以类型21H的中断处理程序的形式提供。主要是I/O管理、文件管理和目录管理。为高级用户提供了与操作系统之间联系的软件接口。15.5命令处理模块的功能具体和哪些命令相对应?此模块包括哪两部分?答:1.与用户打入的键盘命令相对应。是操作系统和普通用户之间的接口。2.此模块包括常驻部分和暂存部分两个部分。15.6通常说的“冷启动”和“热启动”有什么区别?IBMPC/XT系统的加电启动过程是怎样的?答:1.①冷启动是指在关机情况下,通电启动的过程,它要进行系统测试。②热启动是指在运行中按Ctrl+Alt+Del这3个键使系统重新启动的过程。它不进行系统测试,其它同冷启动一样。2.系统一加电就进行系统测试,然后在课后答案网A驱动器中查找是否有系统盘,如有,则进行启动;如没有则在C盘上查找有无系统,如有系统则进行启动,如没有C盘则进入ROMBASIC。15.7简要叙述MS–DOS的冷启动过程www.hackshp.cn(不超过200字)。答:机器上电复位后从ROMBIOS的FFFF0H单元处执行一条无条件转移指令到系统测试程序进行测试并显示信息。此后装配ROMBIOS中的中断向量。接着转到INT19H从系统盘读取引导程序;若无引导程序,则执行ROMBASIC。如有则判断有无三个启动模块,没有则显示出错信息,有则装载之。然后运行IBMBIO.COM设置中断向量表。然后进入IBMDOS.COM运行,装配中断向量,建立磁盘缓冲区,程序段前缀区,并显示版本信息。在有CONFIG.SYS时运行之,否则进入COMMAND.COM,若有AUTOEXEC.BAT则运行,最后显示提示符“>”。启动完毕。15.8系统启动以后,中断向量表在什么位置?ROMBIOS在什么地方?显示存储区的起始地址为多少?DOS工作区在哪里?答:1.中断向量在0000:0000~0000:03FFH的1KB区域内。第87页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)2.ROMBIOS在FE00:0000~FE00:1FFFH的8KB区域内。其通信区首址为0040:0000H。3.显示存储区的起始地址为:单显B000:0000H,彩显B800:0000H。4.DOS工作区在0050:0000~0050:00FFH的256单元。15.9MS–DOS处理哪两类命令?大部分是哪一类命令?它们以什么形式存在?答:1.内部命令和外部命令两类。2.大部分是外部命令。3.内部命令存在于COMMAND.COM程序中,而外部命令以扩展名为.COM或.EXE的文件形式存在于磁盘中。15.10从键盘打入的一个命令,在MS–DOS中是怎样被识别和执行的?试以COPY命令和DEBUG命令为例说明命令的识别和执行过程。答:①当打入一个命令后,COMMAND.COM程序截取命令行中最前面的部分(命令名,如COPY或DEBUG)与内部命令表比较,如果在内部命令表中检索到此命令(如COPY命令),那么,便是内部命令。此时,便查找命令入口表,找到(COPY)命令执行程序入口,并转入执行,以完成(COPY)命令处理。②如果在内部命令表中没有检索到此命令(如DEBUG),则作为外部命令,COMMAND.COM到磁盘上查找相应的命令文件(如DEBUG.COM)或可执行文件。如找到这样的文件,便将它从磁盘读入内存,并在用户区的低地址段建立程序段前缀PSP,PSP中含有此命令文件执行时所需要的各种参数。此后,转入执行这个命令文件。等执行完毕,又显示“>”,等待输入下一个命令。课后答案网15.11磁盘文件的目录项中包含哪些内容?从形式上看,目录项和文件控制块很相像,它们之间最重要的区别是什么呢?答:1.磁盘文件的目录项中包括:文件名、扩展名、属性、时间、日期、首族号及文件长度。www.hackshp.cn2.最重要的区别有以下3条:1目录项在磁盘上,FCB在内存缓冲区,存放地点不同。2目录项是静态的,FCB是动态的。FCB中的有些内容在目录项中没有。3目录项同时存在很多(每个文件对应一个目录项),FCB同时只有1、2个。15.12一个程序从磁盘读到内存后,下一步要运行此程序,那么此时,这个程序的程序段前缀在哪里?答:在DS或ES对应的段地址+0开始的100H个单元中。15.13用文件分配表分配磁盘空间时,有什么特点?这些特点带来什么长处?第88页共89页 课后答案网(hhttp://www.khdaw.comttp://www.khdaw.com)答:1.有两个特点:一是磁盘空间不是一次性进行预先分配,而是每当写入一个新文件,就根据当时的磁盘空间的使000FDF用情况分配空族。二是对一个文件分配的族不是连续的,001FFF002007同一文件所用的族靠FAT链在一起,以便进行文件读/写。003FF72.两个好处:一是可以用链式结构分配磁盘空间,这样,004000每个文件目录项中只需要记录一个文件的首族号,使目≈≈007018录项显得简明。二是有了链表结构以后,文件长度仅仅≈≈受磁盘容量的限制,实际上基本不受限制。01801901904615.14用文字说明右图所示的文件分配表中各项的含义。≈≈答:000单元的第一个字节为FDH,指9扇区/道的双面软盘,第二、三字节为FFFFH是FAT的标志。002为该文件目录项的首族号,FAT中002项的007H为该文件的第二族号,003项的FF7H为坏族,004项的000为空族,007~046中存放的是族链。047项的FF8H是该文件的最后一族。15.15什么叫系统功能调用?在MS–DOS中,可以用INT指令进行系统功能调用,这样做的依据是什么?这种方法对你今后的软件开发有何启发作用?答:1.INT21H指令的执行就叫系统功能调用。2.依据是:系统功能调用程序是用中断服务程序的形式来提供的。3.启发作用是:在软件开发中,应将常用的功能模块设计成中断服务程序的形式,并让其驻留内存,然后通过软件中断来进行调用。课后答案网15.16在用INT指令进行系统功能调用时,特别要注意在指定寄存器中设置入口参数,另外要注意在指定寄存器中得到出口参数,此外,还要注意保护好其他一些寄存器,请回答,这样做的原因是什么?答:因为系统功能是由入口参数来区分的,一些功能程序还需给出入口参数才能执行正常www.hackshp.cn的功能。运行结果是放在指定的寄存器中作为出口参数提供给调用者。另外,有些寄存器中会有一些标志,如Cy,必须保护。第89页共89页'