您好,欢迎来电子发烧友网! ,新用户?[免费注册]

当前位置:电子发烧友网 > 图书频道 > 电子 > 《微计算机原理》 > 第2章 8086微处理器

第7节 练习题

 

  第二章 8086微处理器

  1、8086 CPU为什么要有EU和BIU两个单元?每个单元都由哪几部分组成?它们的作用是什么?两者之间有何联系?

  2、为什么设置段寄存器?它们的主要特点是什么?

  3、为什么设置堆栈?堆栈操作有何特点?

  4、8086预取指令队列有什么好处?简述预取指令机构的工作情况。

  5、分别简述AX、BX、CX、DX、SP、BP、DI的用途。

  6、设CS的内容为A000H,试说明现行代码段可寻址的存储空间范围是多少?

  7、设现行数据段位于存储器B0000H和BFFFFH存储单位,问DS的内容是多少?

  8、8086系统中,存储器的物理地址由哪两部分组成?每一个段和寄存器间有何对应要求?

  9、CPU执行转移指令时是,指令队列寄存器内容将如何发生变化?

  10、在指令执行过程中,EU能直接存取存储器中操作数吗?EU是如何得到指令中的操作数的?它有是有什么方法将指令执行结果写入存储单元中?

  11、有两个16位字902AH和903BH,它们在一个8086系统存储器中的地址分别是00020H和00023H,请用图示标出它们在存储器中的位置。

  12、在一个8086系统中,存放如下信息,现在处理器要读一个地址为000A3H的字,试写出该字内容,并指出读该字的过程。

  13、设双字12345678H的起始地址是0A001H,说明这个双字在存储器中是如何存放的?

  14、说明8086最小模式系统和最大模式系统之间的差别。

  15、试说明8086与8088微处理器之间的主要差别。

  16、将两数相加(用加法指令),即01001100B加01100101B,执行加法指令后,CF、PF、AF、ZF、SF、OF各为何值?

  第二章 自测题

  1、8086CPU由哪两部分组成?它们的主要功能是什么?8086CPU与8088CPU的主要区别是什么?

  答案

  8086CPU内部由执行部件和总线接口部件两部分组成。总线接口部件的任务是负责在I/O接口、存储器及CPU之间进行数据传送。执行部件负责分析指令并执行指令。8088CPU内部的指令队列寄存器只有4个(8086为6个)8088的数据总线仅有8位(8086为16位)。

  2、8086/8088和传统的计算机相比,在执行指令方面有什么不同?这种设计的优点何在?

  答案

  传统的计算机在执行指令时取指令、分析指令和执行指令均由内部一次完成。而 8086/8088CPU内部由EU和BIU两个部件组成,二者间用指令队列寄存器进行联系。BIU由存储器中取出指令后放入指令对列寄存器中,EU再由指令队列中取出指令然后分析指令并执行指令。即是说,在8086/8088CPU内部取指令和分析指令是同时进行的,这样,CPU执行完一条指令后马上就可以执行下一条指令,故可以提高运算速度。

  3、8086/8088微处理器内部有哪些寄存器?其主要作用是什么?

  答案

  8086/8088内部的寄存器阵列可以分为四组,它们是:通用寄存器组AX,BX,CX,DX;指示器和变址寄存器SP,BP,SI,DI;段寄存器CS,DS,SS,ES;指令指示器和标志寄存器IP,FLAG。简单地说,通用寄存器用作常规运算,寄存中间结果。指示器和变址寄存器在对寄存器的操作数寻址时,用以形成20位物理地址的偏移量,任何情况下都不能单独形成或访问内存的地址码。段寄存器用以指明8086/8088 20位物理地址的高16位,它们使用专一,不可互换。指令寄存器IP用以指明要执行指令的偏移量(段地址由CS提供)。标志寄存器用以存放运算过程中的状态。

  4、设某台微处理器有20条地址总线和16条数据总线:

  (1)若存储器寻址空间和I/O地址的寻址空间是分开的,问存储器空间有多大?

  (2)经由数据总线可传送的带符号数的范围是多大?

  答案

  (1)存储器的寻址空间为220=1MB。

  (2)可传送的带符号数的范围为-32768~+32767。

  5、有两个16位字1EF5H和2A3DH分别存放在00B0H和00BCH单元中,用图表表示它们在存储器里存放情况。

  答案

  

 

  6、存储器里存放的信息如图所示。试读出30022H,30024H单元字节的内容及30021H及30022H单元字的内容。

  答案

  (30022H)=ABH   (30024H)=EFH

  (30021H)=AB34H  (30022H)=CDABH

  7、写出下列存储器地址的短地址、偏移地址和物理地址。

  (1)2314H:0035;(2)1FD0H:00A0H;(3)0000H:0100H;(4)3FB0H:0053H

  答案

  题号段地址偏移地址物理地址

  (1)2314H0035H23175H

  (2)1FD0H00A0H1FDA0H

  (3)0000H0100H00100H

  (4)3FB0H0053H3FB53H

  8、如果在一个程序段开始执行之前,(CS)=0A7EH,(IP)=2B40H。试问:该程序段的第一个字的物理地址?指向这一物理地址的CS值和IP值是唯一的吗?

  答案

  该程序段第一个字节的物理地址为(CS)×16+IP=0D320H,该字节的物理地址是唯一的,但段地址和偏移地址不是唯一的。例如(CS)=0D301H,IP=0020H,其物理地址亦为0D320H。

  9、状态标志和控制标志有何不同?程序中如何利用这两类标志?8086/8088的状态标志和控制标志有哪些?

  答案

  状态标志表示前面的操作执行后,算术逻辑部件处在怎样一个状态,这种状态会像某种先决条件一样影响后面的操作。控制标志是人为设置的,8086/8088指令系统中有专门的指令用于控制标志的设置与清除。每个控制标志都对某种特定的功能起控制作用。

  10、将十六进制数62A0H与下列各个数相加,试给出和数及标志AF,SF,ZF,CF,OF和PF的状态:

  (1)1234H;(2)4321H;(3)CFA0H;(4)9D60H

  答案

  (1)0111010011010100

  SF=0 ZF=0 PF=1 CF=0 AF=0 OF=0

  (2)1010010111000001

  SF=1 ZF=0 PF=0 CF=0 AF=0 OF=1(用双高位判别)

  (3)10011001001000000

  SF=0 ZF=0 PF=0 CF=1 AF=0 OF=0

  (4)0000000000000000

  SF=0 ZF=1 PF=0 CF=1 AF=0 OF=0

  11、在某个程序的运行过程中,堆栈的栈顶单元偏移地址为7F80H,而堆栈中相应数据区存放一个偏移地址为74CAH的数。试问:当执行程序要引用该数据区中的数据时,上述两个地址应防在寄存器中?提示:栈中的数据为程序的偏移地址。

  答

  在堆栈操作中,段地址只能用在SS,而偏移地址只能由SP来提供,故栈顶单元的偏移地址7F80H只能放在SP中,根据题意,堆栈中存放的数为程序的偏移地址,因此它也只能放在指令寄存器IP中。即74CAH在引用此数时放入IP中。

  12、试述8086/8088中SP,BP,SI,DI有何特殊用途。

  答

  SP,BP,SI,DI分别叫做指示器和变址寄存器。它们的通常用法是在寻址过程中作为偏移得罪寄存器。此外它们还有自己的特殊用法。SP和BP在运算中访问当前堆栈数据提供了方便,把堆栈段作为一个“数据区”,对执行高级语言很有用途。这样,除非特别指定,存放在指示器中的偏移量,总是假定为引用当前的数据段。有些指令又把SP和BP加以区分,如PUSH,POP,只用SP作偏移量。BP不能用作这个目的,但却可以用着堆栈段中一个数据区的“基址”的偏移量。SI和BI一般是假定为引用当前数据段基址的偏移量。另外在数据串操作指令中,SI和DI的使用非常专一。SI只能作为源操作数的偏移地址,而DI只能作为目标操作数的偏移地址。而者绝对不可以互换。还应当指出,在串操作指令中,串操作指令不能直接地指定它们,因它们是被隐含指定的。

  13、现有8个字节的数据为:34H,45H,56H,67H,78H,89H,9AH,ABH,假定它们在存储器中的物理地址为400A5H~400ACH。若当前(DS)=4002H,试求各存储单元的有效地址;若从存储器中读出这些数据,试问需要访问几次存储器?

  答案

  根据题意,该数据段第一字节的物理地址为400A5H,而段地址为4002H,故第一个字节的有效地址为400A5H-4002H×16=0085H。依次类推,各个字节的有效地址分别为0085H,0086H,0087H,0088H,0089H,008AH,008BH和008CH。

  由于数据是以字节的形式存放的。因此每读一个字节需访问一次存储器,共需8个总线周期。若是以字节的方式读出这些数据,由于存放的格式为非对准字,每读出一个非对准字需要两个总线周期,四个非对准字共需8个总线周期。

  14、选择题:

  (1)计算机使用总线结构的优点是便于实现积木化,同时( )。

  (A)减少了信息传输量;(B)提高了信息传输速度;(C)减少了信息传输线的条数。

  其缺点是( )。

  (D)地址信息、数据信息结合控制信息不能同时出现;(E)地址信息和数据信息不能同时出现;(F)两种信息源的代码在总线中不能同时传递。

  (2)微型计算机的控制总线提供( )。

  (A)数据信息流;(B)存储器和I/O设备的地址码;(C)所有存储器和I/O设备的时序信号;(D)所有存储器和I/O设备的控制信号;(E)来自I/O设备和存储器的响应信号;(F)上述各项;(G)上述C、D项;(H)上述C、D和E三项。

  (3)总线中地址线的功能是( )。

  (A)用于选择存储器单元;(B)用于选择进行信息传输的设备;(C)用于指定存储单元和I/O设备接口电路的选择地址。

  (4)微型计算机中读/写控制信号的作用是( )。

  (A)决定数据线上的数据流方向;(B)控制存储器或I/O接口操作(R/W)的类型;(C)控制流入、流出存储器或I/O接口信息的方向;(D)以上任意用。

  答案

  (1)C,F (2)H (3)C (4)A,B,C

  15、填空题:

  (1)8086工作在最小模式下,控制数据流方向的信号是   、   、   、   、   。

  (2)为了减轻总线负载,总线上的不见大都应具有三态逻辑,三态逻辑电路输出信号的三个状态是   、    、   。

  (3)微处理器总线响应物理上的含义是    。

  答案

  (1)M/IO,RD,WR,DT/R,DEN

  (2)高电平,低电平,高阻

  (3)CPU的地址总线、数据总线和三态的控制总线已处于高阻状态。

  16、在8086/8088中RESET信号来到后,CPU的状态有哪些特点?

  答案

  (1)把CPU内部寄存器置初值:指令队列及FLAG,IP,DS,ES和SS均清零,CS置为FFFFH。

  (2)由于状态标志被清0,故不能响应可屏蔽中断。

  (3)将所有的三态输出线置成成高阻状态,包括:AD0~AD15。A16/S3~A19/S6,BHE/S7,M/IO,DT/R,DEN,WR,RD,INTA。

  (4)其它信号线状态:ALE,HLDA,QS0,QS1置为逻辑“0”,RQ/GT0,RQ/GT1置为逻辑“1”。

  17、BHE信号和A0信号是通过怎样的组合解决存储器和I/O端口读/写操作的?这种组合决定了8086系统中存储器偶地址及奇地址之间应该用什么信号区分?怎样区分?

  答案

  在8086中把1MB的存储空间分为512KB的存储体,一个用于存放偶数地址字节(低字节),一个用于存放奇数字节(高字节),两个存储体之间采用交叉编址方式,即用地址线A0作为偶存储体的地址选通信号。A0=0选通偶存储体,偶存储体的数据线与数据总线的高8位(D8~D15)相连。CPU可以访问任何一个存储体,读/写一个字节,也可以同时访问两个存储体读写一个字节。

  18、试说明空闲周期的含义。

  答案

  所谓空闲状态是指总线接口部件BIU不和总线交换信息的状态。由于当BIU需要补充指令队列流的空缺或当EU执行指令过程中需经外部总线与存储器或I/O接口之间进行信息传输时,CPU才执行总线周期。在不执行总线周期时,就不存在总线周期,但却存在时钟周期。没有总线活动的周期被称为总线空闲周期T1。

  在总线空闲周期,虽然不进行总线操作,但CPU内部的EU却仍在进行着有效的操作。因此总线空闲周期是总线接口部件BIU对执行部件的等待。

  *19、时钟发生器8284的功能是什么?画出它的电路图。

  答案

  时钟发生器8284的作用是为8086/8088CPU提供频率恒定的时钟信号;同时还提供了复位信号发生电路和“准备好”信号控制电路,复位信号发生电路提供系统复位信号RESET,“准备好”信号控制电路用于对存储器或I/O口产生 的“准备好”信号READY进行同步。关于线路图及引脚的使用请参考资料。

  20、总线周期的含义是什么?8086/8088的基本总线周期由几个时钟周期组成?假定某8086CPU的时钟频率为24MHz,试问它的一个时钟周期是多少?一个基本总线周期是多少?

  答案

  CPU访问存储器或I/O端口存取一个字节所需的时间称为一个总线周期。8086/8088的基本总线周期由4个时钟周期组成,分别叫做T1,T2,T3,T4。8086/8088的读周期和写周期是有差别的。

  当8086的时钟频率为24MHz时,一个时钟周期为1us/24,一个基本的总线周期为1us/24×4=1us/6。

  21、从引脚上看,8086和8088有什么区别?

  答案

  8086和8088引脚的差别如下(均为最小方式比较):

  比较项80868088

  数据线168

  地址/数据复用线168

  存储器/I/O接口选通线M/IOIO/M

  高位地址选通信号BHE/S7选通寄存储体无,SS0与IO/M,DT/R组合产生控制信号

  22、在8086的微机系统中,为什么采用AD0作为低8位数据的选通信号?

  答案

  在8086中,存储器结构有奇偶之分,又规定,当读/写一个字时,若从偶地址开始,则只需一个总线周期;若从奇地址开始,则需两个总线周期。数据存放格式又规定为低字节在地址的低位,高字节在地址的高位。上述因素决定了能满足系统规定的要求,又能加快信息的存取时间,用AD0=0作为偶存储体(存放低8位数据)的选通信号。

  23、8086和8088在最大模式和最小模式下,引脚信号分别有什么不同?

  24、8086和8088如何解决地址线和数据先的复用问题?ALE信号何时处于有效状态?

  答案

  8086/8088通过外接地址锁存器解决地址线和数据线的复用问题。当ALE处于有效状态时,CPU地址/数据复用线上输出的为地址信息。

  *25、试述总线控制器8288的功能;并说明8086在最大模式下为什么一定要用总线控制器;总线控制起输入及输出信号各是什么?

  答案

  简单地说,总线控制器8288用来对8086/8088的CPU控制信号进行转换,以使8086/8088工作在最大模式时能完成对多CPU处理系统中的总线争用问题,同时保证各处理器之间能正常通信。具体地说,8288有如下6种功能:

  (1)产生系统总线控制信号或仅访问I/O设备的I/O控制信号(INTA,IORC,IOWC)。即可选择8288是工作于系统总线方式还是I/O总线工作方式。

  (2)使总线控制信号浮空,以允许DMA操作或决定总线优先权。

  (3)提供超前控制信号,以便和慢速存储器及I/O设备交换信息。

  (4)实现使控制信号无效控制,以供多CPU结构使用。

  (5)产生ALE地址锁存允许信号和双向数据驱动的控制信号DEN和DT/R。

  (6)产生简单或级联中断逻辑所需的控制信号。

  8288输入、输出信号(略)。

  *26、8086系统在最小模式下的基本配置如何?试画出这种配置的连接关系。

  答案

  8086系统在最小模式时需配备如下器件:8284时钟发生器,20位地址锁存器(用3片8282或8283完成,亦可用74LS373完成),用以锁存有效地址。用ALE作为选通信号,用2片8286(或8287,74LS245)作为数据总线驱动器,其控制信号有DT/R或DEN。

  连线图请参考相关资料。此处略。

  27、试述T1状态下地址/数据总线上的信息类型及锁存信号状态。数据信息在何时有效。用时序图表示。

  答案

  在T1状态下,首先由M/IO指明是进行的I/O操作还是存储器操作。地址/数据复用线给出进行操作的地址(存储器操作20位,I/O操作16位),地址锁存信号ALE处于有效状态(高电平)以锁存地址。BHE信号为有效状态(低电平)以便输入/输出数据的高8位。

  在T3状态下,数据线上出现有效数据。

  *28、画出8086在最小模式下的读周期时序。

  答案

  8086在最小模式下的读周期时序如图所示: