1《微型计算机原理》习题3(P117)参考答案(部分题号与教材有错位,请注意)3.1为什么要研究8086/8088微处理器及其系统?这比直接研究32位微处理器及其系统有何优缺点?解:尽管8086/8088后续的80286、80386、80486以及Pentium系列CPU结构和功能已发生很大变化,但从基本概念与结构以及指令格式上来讲,他们仍然是经典的8086/8088CPU的延续与提升。3.28086CPU有多少根数据线和地址线?它能寻址多少内存地址单元和I/O端口?8088CPU又有多少根数据线和地址线?为什么要设计8088CPU?解:8086CPU有16根数据线和20根地址线,可寻址1MB存储单元和64KB的I/O端口。8088CPU有16位内部数据线和8条外部数据总线,20根地址线。8088CPU是8086CPU的向下兼容版,这样设计主要为了与INTEL原有的8位外围接口芯片直接兼容。3.38086CPU内部按功能可分为哪两大部分?他们各自的主要功能是什么?解:从功能上讲,8086可分为两个部分,即总线接口单元(businterfaceunit,BIU)和执行单元(executionunit,EU)。总线接口单元(BIU)的功能是负责CPU与存储器或I/O设备之间的数据传送。EU的功能只是负责执行指令;执行的指令从BIU的指令队列缓冲器中取得,执行指令的结果或执行指令所需要的数据,都由EU向BIU发出请求,再由BIU经总线控制电路对存储器或外设存取。3.48086CPU内部的总线接口单元BIU由哪些功能部件组成?他们的基本操作原理是什么?解:BIU内有4个16位的段地址寄存器CS、DS、SS和ES,16位指令指针IP,6字节指令队列缓冲器,20位地址加法器和总线控制电路。基本操作原理是BIU要从内存取指令送到指令队列缓冲器;CPU执行指令时,总线接口单元要配合执行单元从指定的内存单元或者外设端口中取数据,将数据传送给执行单元,或者把执行单元的操作结果传送到指定的内存单元或外设端口中。3.5什么叫微处理器的并行操作方式?为什么说8086CPU具有并行操作的功能?在什么情况下8086的执行单元EU才需要等待总线接口单元BIU提取指令?解:并行操作,就是CPU执行完1条指令后就可以立即执行下一条指令,而不需要像以往8位CPU那样重复的进行先取指令和后执行的指令串行操作。16位CPU的这种并行操作的特点,提高了总线的信息传输效率和整个系统的执行速度。只有当遇到转移指令、调用指令或返回指令时,或者当某一条指令在执行过程中,需要频繁访问内存以至于总线接口单元没有空闲从内存将指令提取到指令队列中时,才需要等待总线接口单元BIU提取指令。3.6逻辑地址和物理地址有什么区别?为什么8086微处理器要引入“段加偏移”的技术思想?段加偏移的基本含义又是什么?试举例说明。解:逻辑地址由16位段地址和16位段内偏移量(又称有效地址)组成,程序中指令必须通过逻辑地址访问内存。物理地址是由20条地址线信号指示的内存地址,在电路中必须使用这20条物理的地址信号线访问内存。物理地址=段地址×16+有效地址。参考教材:⑴P54第3~11行⑵P56“2。段寄存器”的第1段⑶P70“3。3。5‘段加偏移’寻址机制允许重定位”2段加偏移的基本含义是:将段寄存器内容左移4位后与16位偏移地址相加。例:假设CS=FA00H,IP=0300H,这是物理地址为0FA300H。3.7在微处理器中设置指令队列缓冲器有什么作用?8086与8088CPU中的指令队列有何区别?解:指令队列缓冲器在执行指令的同时,可以从内存中取下面一条或几条指令,取来的指令就依次暂放在指令队列中。区别:8086指令队列为6个字节,8088为4字节;8086指令队列只要空出2个,而8088只要空出1个指令字节时,BIU便自动执行取指操作,直到填满为止。3.88086CPU的基址寄存器BX和基址指针(或基址指针寄存器)BP有何区别?基址指针BP和堆栈指针SP在使用中有何区别?解:基址寄存器BX在查表指令XLAT中存放表的起始地址,而基址指针BP用来存放堆栈地址。指针寄存器SP和BP都用来指示存储位于当前堆栈段中的数据所在的地址,但SP和BP在使用上有区别。入栈和出栈指令是由SP给出栈顶的偏移地址,故称为堆栈指针寄存器。而BP则是存放位于堆栈段中的一个数据区的基地址的偏移地址,故称为堆栈基址指针寄存器。3.9段地址和段起始地址相同吗?两者是什么关系?8086的段起始地址就是段基址吗?它是怎样获得的?解:不同。为了使8086/8088CPU能够寻址1MB内存空间,在其内部设计了一组16位的段寄存器,用这些段寄存器的内容作为段地址,再由段寄存器左移4位形成20位的段起始地址。8086的段起始地址就是段基址。由段寄存器左移4位形成20位的段基址。3.10微处理器在实模式下操作时,段寄存器的用途是什么?解:为了使8086/8088CPU能够寻址1MB内存空间,在其内部设计了一组16位段寄存器,用这些段寄存器的内容作为段地址,再由段寄存器左移4位形成20位的段起始地址,它们通常被称为段基址;这样,8086/8088就有可能寻址1MB存储空间并将其分为若干个逻辑段,提供在内存中的重定位功能。3.11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址。(1)1000H(2)1234H(3)E000H(4)AB00H解:(1)起始地址:10000H结束地址:10000H+FFFFH=1FFFFH(2)起始地址:12340H结束地址:12340H+FFFFH=2233FH(3)起始地址:E0000H结束地址:E0000H+FFFFH=EFFFFH(4)起始地址:AB000H结束地址:AB000H+FFFFH=BAFFFH3.12微处理器在实模式下操作,对于下列CS:IP组合,计算出要执行的下条指令的存储器地址。(1)CS=1000H和IP=2000H(2)CS=2400H和IP=1A00(3)CS=1A00和IP=B000H(4)CS=3456H和IP=ABCDH解:(1)下条指令地址:10000H+2000H=12000H(2)下条指令地址:24000H+1A00H=25A00H(3)下条指令地址:1A000H+B000H=25000H(4)下条指令地址:34560H+ABCDH=3F12DH3.138086在使用什么指令时,用哪个存储器保存记数值?解:在使用无条件重复指令REP时,CX寄存器用来保存记数值;在使用循环控制指令LOOP时,CX寄存器用来保存记数值。3.14IP寄存器的用途是什么?它提供的是什么信息?解:简单地说,IP寄存器指示即将执行的下一条指令的段内偏移地址。一般情况下,CPU每取一个指令字节,IP就自动加1,从而保证程序的顺序运行。程序控制类指令改变IP值,从而改变程序的运行顺序。33.158086的进位标志位有哪些运算指令来置位?解:当执行加法、减法、乘法指令、BCD调整指令、移位和循环指令都会影响进位标志,但使CF置位的运算指令只有NEG指令(STC不算运算指令)。3.16如果带符号数FFH与01H相加,会产生溢出吗?解:0FFH+01H=0H,所以不会产生溢出。3.17某个数包含有5个1,它具有什么奇偶性?解:奇偶性为奇,标志PF=03.18某个数为全0,它的零标志位为0吗?(题目不好,应该改为:某指令执行后,其结果为全0,它的零标志位为0吗?)解:不为0,零标志ZF=13.19用什么指令设置哪个标志位,就可以控制微处理器的INTR引脚?解:用STI和CLI指令控制IF标志,就可以控制微处理器的INTR引脚。3.20微处理器在什么情况下才执行总线周期?一个基本的总线周期由几个状态组成?在什么情况下需要插入等待状态?解:为了从存储器中取得指令或者与一个存储单元或I/O接口单元传送数据,需要它的总线接口单元执行一个总线周期。一个总线周期由T1、T2、T3和T4这四个状态。由于外设或存储器的速度较慢,不能及时的配合CPU传送数据。这时,外设或存储器就会通过“READY”的信号线在T3状态启动之前向CPU发一个“数据未准备好”信号,表示他们还来不及同CPU之间传送数据,于是,CPU会在T3之后自动插入一个或多个附加的时钟周期TW,这个TW就叫等待状态。3.21什么叫做非规则字,微处理器对非规则字是怎样操作的?解:对内存中存放的字数据,其低位字节在奇数地址开始存放,称为非规则存放,存放的字叫非规则字。8086对非规则字必须分两次访问。3.228086对1MB的存储空间是如何按高位库和低位库来进行选择和访问的?用什么控制信号来实现对两个库的选择?解:8086的1MB存储空间分为两个512KB的存储体,又称存储库,分别叫高位库和低位库,低位库与数据总线D7—D0相连,该库中每个单元的地址均为偶数地址,高位库与数据总线D15—D8相连,该库中每个单元的地址均为奇数地址。用A0对低位库和用BHE对高位库实现选择控制。3.23堆栈的深度由哪个寄存器确定?为什么说一个堆栈的深度最大为64kB?在执行一条入栈或出栈命令时,栈顶地址将如何变化?解:堆栈的深度由堆栈指针SP来确定。因为存储器中包括堆栈段在内的每一个逻辑段至多可包含64KB长的连续存储单元,所以一个堆栈的深度最大为64KB。执行PUSHs指令时,先SP←SP-2,再[SS:SP]←S执行POPd指令时,先d←[SS:SP],再SP←SP+23.258086/8088CPU对RESET复位信号的复位脉冲宽度有何要求?复位后内部寄存器的状态如何?解:RESET复位信号的复位脉冲宽度不得小于4个时钟周期。复位后各个寄存器状态如下:CS=0FFFFH,DS=ES=SS=0,F=0,指令队列清空。3.26ALE信号起什么作用?它在使用时能否被浮空?DT/R信号起什么作用?它在什么情况下被浮置为高阻状态?解:它是8086/8088提供给地址锁存器8282/8283的控制信号,高电平有效。ALE在使用时不能被浮空。在使用8286/8287作为数据总线收发器时,DT/R信号用来控制8286/8287的数据传送方向。4在DMA方式时,它被置为高阻状态。3.278086/8088CPU的哪些引脚采用了时分复用技术?哪些引脚具有两种功能?解:地址/数据总线AD15—AD0,地址/状态总线A19/S6—A16/S3,BHE/S7采用了分时复用技术。MN/MX、DT/R、M/IO、RQ/GT1、RQ/GT0具有两种功能。3.288086/8088CPU的微机系统有哪两种工作方式?它们由什么引脚来实现控制?这两种工作方式的主要特点和区别如何?解:8086/8088CPU微机系统有最大和最小两种工作方式。他们由MN/MX引脚实现控制。MN/MX接电源电压,系统工作于最小方式,即单处理机系统,适合于较小规模的应用。MN/MX接地,系统工作于最大方式,一般包含两个或多个微处理器,这样就要解决主处理器和协处理器之间的协调问题以及对总线的共享控制问题。最大方式和最小方式的主要区别是外加有8288总线控制器。3.29当8086/8088按最大方式操作时,8288总线控制器主要提供什么功能?8086/8088CPU在最大方式下工作时有哪些专用引脚?它们的主要作用是什么?解:通过它对CPU发出的控制信号进行变换和组合,以得到对存储器和I/O端口的读/写信号和对锁存器器8282及对总线收发器8286的控制信号,使总线控制功能更加完善。在最大方式下使用的专用引脚有:(1)QS1、QS0指令队列状态信号输出这两个信号组合起来提供了本总线周期的前一个时钟周期中指令队列的状态,以便于外部对8086/8088内部指令队列的动作跟踪。(2)LOCK总线封锁信号输出当LOCK为低电平时,系统中其他主部件就不能占有总线。(3)RQ/GT1、RQ/GT0总线请求信号输入/总线这两个信号端可供CPU以外的两个处理器用来发出使用总线的请求信号和接收CPU对总线请求信号的回答信号。(4)