2024年3月24日发(作者:)

第2章 习题参考解答

1.8086处理器内部一般包括哪些主要部分?

8086处理器与其他处理器一样,其内部有算术逻辑部件、控制与定时部件、总线与总线接口部件、寄

存器阵列等。按功能结构可分为两部分,即总线接口单元(BIU)与执行单元(EU)。BIU主要包括段寄存

器、内部通信寄存器、指令指针、6字节指令队列、20位地址加法器和总线控制逻辑电路。EU主要

包括通用寄存器阵列、算术逻辑单元、控制与定时部件等。

2.什么是总线? —般微机中有哪些总线?

所谓总线是指计算机中传送信息的一组通信导线,它将各个部件连接成—个整体。在微处理器内部各

单元之间传送信息的总线称为片内总线;在微处理器多个外部部件之间传送信息的总线称为片外总线

或外部总线。外部总线又分为地址总线、数据总线和控制总线。随着计算机技术的发展,总线的概念

越来越重要。微机中常用的系统总线有PC总线、ISA总线、PCI总线等。

3.什么是堆栈?它有什么用途?堆栈指针的作用是什么?

堆栈是一个按照后进先出的原则存取数据的部件,它是由栈区和栈指针组成的。堆栈的作用是:当主

程序调用子程序、子程序调用子程序或中断时转入中断服务程序时,能把断点地址及有关的寄存器、

标志位及时正确地保存下来,并能保证逐次正确地返回。堆栈除了有保存数据的栈区外,还有一个堆

栈指针SP,它用来指示栈顶的位置。若是“向下生成”的堆栈,随着压入堆栈数据的增加,栈指针

SP的值减少。但SP始终指向栈顶。

4.在8086 CPU中,FR寄存器有哪些标志位?分别说明各位的功能。

8086 CPU中设置了一个16位的标志寄存器FR,其中用了9位,还有7位保留。9位中有3位作为控

制标志,6位作为状态标志。

IF:中断控制标志。当IF=1时,允许可屏蔽中断请求;当IF=0时,禁止可屏蔽中断请求。

TF:单步运行标志。当TF=1,单步运行;TF=0,连续运行程序。

DF:方向标志。当DF=0,串操作时地址按增量修改;DF=1,地址按减量修改。

SF:符号(负数)标志。当运算结果的最高位为1(负数)时,SF=1;反之SF=0。

ZF:零标志。当运算结果为0,则ZF=1;否则ZF=0。

AF:辅助进位/借位标志。当算术运算时低4位有进位/借位,则AF=1;否则AF=0。AF主要用

于BCD码运算中进行结果调整。

PF:奇偶标志。当运算结果低8位中1的个数为偶数时PF=1;否则PF=0。

CF:进位/借位标志。当算术运算结果最高位有进位/借位时,CF=1;否则CF=0。逻辑运算时CF

=0,循环移位指令也影响CF标志。

OF:溢出标志。当符号数算术运算结果有溢出时OF=1;否则OF=0。

5.在8086 CPU中,有哪些通用寄存器和专用寄存器?试说明专用寄存器的作用。

8086 CPU中有4个16位的通用寄存器,即AX、BX、CX、DX。每个16位寄存器又可分为2个,共

8个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL。

4个段寄存器(即代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES)用来存

放各段的起始地址。FR用来存放标志。IP用来存放程序地址的偏移量,它不能提供给程序员编程。

SP是堆栈指针,专门用来指示堆栈位置。BP为基址指针,作为基址寄存器使用,它与变址寄存器SI、

DI配合作为一个寻址方式。BP主要用来访问堆栈段中的数据。

6.若CS=8000H,试说明现行代码段可寻址的存储空间范围。

若CS=8000H,现行代码段可寻址的存储空间范围为80000H~8FFFFH。

7.设现行数据段位于存储器的B0000H~BFFFFH,试说明DS段寄存器的内容。

DS=B000H

8.设双字12345678H的起始地址为A001H,试说明这个双字在存储器中是如何存放的。

该双字在存储器中的存放如下:

地址

A0001H

A0002H

A0003H

A0004H

RAM

78

56

34

12

9.说明8086的EU和BIU的主要功能。

8086 CPU的BIU对外提供16位双向数据总线和20位地址总线。它负责完成所有的外部总线操作,

即完成取指令、指令排队、读与写操作、地址转换和总线控制。

执行单元EU的主要功能是完成指令译码与执行指令工作。EU从BIU的指令队列输出端取得指令,

对指令的代码进行译码,产生操作数地址并将其传送给BIU,向BIU申请完成存储器或I/O的读写

周期,对操作数进行指令规定的操作。在指令执行期间,EU测试标志位,根据指令执行的结果修改

标志位。若指令队列是空的,EU等待下一次取得指令字节,且修改指令队列的输出指针。EU有一个

16位的ALU,专门用来对操作数进行算术和逻辑运算。

10.说明8086CPU组成的系统中为什么必须使用地址锁存器?

8086的数据总线和低16位地址总线是采用分时复用的。当执行存储器读写或I/O读写,在CPU总线

周期的T1状态时,作地址总线输出(A15~A0),在其他状态均作为双向数据总线使用。地址总线的

高4位A19~A16也是复用线,但他们是地址/状态复用线。为了使地址信息在整个总线周期中均保持

有效地址,必须设置地址锁存器把T1状态上输出的20条地址信息进行锁存。

11.8086 CPU的最大寻址范围是多少?如何实现对整个地址空间寻址?

8086的存储器最大寻址范围为1M字节(地址为00000H~FFFFFH);I/O寻址的最大范围为64K(口地

址为0000H~FFFFH)。对1M存储器的寻址是通过段寄存器来实现的,每个存储器段为64K字节,1M

字节的存储器可以分为若干个64KB段,利用段寄存器可寻址整个存储空间。对I/O空间的寻址可

使用直接寻址(对8位口地址);也可使用DX进行间接寻址(对16位口地址)。

16.在8086中,地址/数据复用信号是如何区分的?

在8086中,地址/数据复用信号是在时间上区分的。在总线周期的T1状态,CPU在这些引脚上输出

存储器或I/O端口地址,在T2、T3、T4状态则输出数据收发信号。