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

第2章 8086微处理器及其系统

习题解答

1. 8086 CPU 由哪两部分构成,它们的主要功能是什么在执行指令期间,EU 能直接访问存储

器吗,为什么

【解】8086CPU由执行部件(EU)和总线接口部件(BIU)两部分组成。

执行部件由内部寄存器组、算术逻辑运算单元(ALU)与标志寄存器(FR)及内部控制

逻辑等三部分组成。寄存器用于存储操作数和中间结果;算术逻辑单元完成16位或8位算

术逻辑运算,运算结果送上ALU内部数据总线,同时在标志寄存器中建立相应的标志;内部

控制逻辑电路的主要功能是从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控

制信号,控制各部件的协同工作以完成指令的执行过程。

总线接口部件(BIU)负责CPU与存储器、I/O设备之间传送数据、地址、状态及控制信

息。

每当EU部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推

进。EU要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU就向BIU

申请总线周期,若BIU总线空闲,则立即响应,若BIU正在取一条指令,则待取指令操作完

成后再响应EU的总线请求。

2. 8086CPU与传统的计算机相比在执行指令方面有什么不同这样的设计思想有什么优点

【解】8086 CPU与传统的计算机相比增加了指令队列缓冲器,从而实现了执行部件(EU)与

总线接口(BIU)部件的并行工作,因而提高了8086系统的效率。

3. 8086 CPU 中有哪些寄存器,各有什么用途

【解】8086共有8个16位的内部寄存器,分为两组:

① 通用数据寄存器。四个通用数据寄存器AX、BX、CX、DX均可用作16位寄存器也可

用作8位寄存器。用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。

AX(AH、AL)累加器。有些指令约定以AX(或AL)为源或目的寄存器。实际上大多数

情况下,8086的所有通用寄存器均可充当累加器。

BX(BH、BL)基址寄存器。BX可用作间接寻址的地址寄存器和基地址寄存器,BH、BL

可用作8位通用数据寄存器。

CX(CH、CL)计数寄存器。CX在循环和串操作中充当计数器,指令执行后CX内容自动

修改,因此称为计数寄存器。

DX(DH、DL)数据寄存器。除用作通用寄存器外,在I/O指令中可用作端口地址寄存器,

乘除指令中用作辅助累加器。

② 指针和变址寄存器。

BP(Basic Pointer Register)基址指针寄存器。

SP(Stack Pointer Register)堆栈指针寄存器。

SI(Source Index Register)源变址寄存器。

DI(Destination Index Register)目的变址寄存器。

BP、SP称为指针寄存器,用来指示相对于段起始地址的偏移量。BP和SP一般用于堆栈

段。SI、DI称为变址寄存器,可用作间接寻址、变址寻址和基址变址寻址的寄存器。SI一般

用于数据段,DI一般用于数据段或附加段。

标志寄存器(FR):是一个16位寄存器,算术逻辑单元进行算术逻辑运算后,在标志寄

存器中建立相应的标志。

段地址寄存器(CS、DS、SS、ES)。用于存放段地址,根据其主要用途,分为代码段寄存

器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES。

代码段寄存器CS:代码段是存放程序代码的存储区域,代码段寄存器用来存放代码段存

储区域的起始地址。

数据段寄存器DS:数据段是存放程序中所使用的数据的存储区域,数据段寄存器用来存

放程序的数据存储区的起始地址。

堆栈段寄存器SS:堆栈段寄存器用来存放堆栈存储区的起始地址。由堆栈段寄存器SS

与堆栈指针寄存器SP来确定当前堆栈指令的操作地址。

附加段寄存器ES:附加段是为某些字符串操作指令存放目的操作数而设置的一个附加的

数据段,附加段寄存器用来存放该附加数据段存储区域的起始地址。

指令指针寄存器(IP)。又称程序计数器,是16位寄存器。IP中存放当前将要执行的指

令的有效地址,每取出一条指令IP自动增量,即指向了下一条指令。

指令队列缓冲器:是一个与CPU速度相匹配的高速缓冲寄存器。在EU执行指令的同时,

BIU可以从内存中取出下一条或下几条指令放到指令缓冲器中,EU执行完一条指令后,可以

立即从指令缓冲器中执行下一条指令。

4. 状态标志与控制标志有何不同,程序中是怎样利用这两类标志的标志寄存器有哪些标志

位,各在什么情况下置位

【解】状态标志根据算术逻辑运算结果由硬件自动设定,它们反映运算结果的某些特征或状

态,可作为后继操作(如条件转移)的判断依据。控制标志由用户通过指令来设定,它们可

控制机器或程序的某些运行过程。

标志寄存器的内容如下:

15

14

13

12

11 10 9

IF

8

TF

7

SF

6

ZF

5

--

4

AF

3

--

2

PF

1

--

0

CF OF DF

CF(Carry Flag)进位标志,反映在运算结果的最高位有无进位或借位。如果运算结果的

最高位产生了进位(加法)或借位(减法)则CF=1,否则CF=0。

PF(Parity Flag)奇偶标志,反映运算结果中“1”的个数的奇偶性,主要用于判断数据

传送过程中是否出错。若结果的低8位中有偶数个“1”则PF=1,否则PF=0。

AF(Auxiliary Carry Flag)辅助进位标志,又称半进位标志。加减运算时,若D

3

向D

4

生了进位或借位则AF=1,否则AF=0。在BCD码运算时,该标志用于十进制调整。

ZF(Zero Flag)零标志,反映运算结果是否为0。 若结果为零则ZF=1,否则ZF=0。

SF(Sign Flag)符号标志,反映运算结果最高位即符号位的状态。如果运算结果的最高位

为1则SF=1(对带符号数即为负数),否则SF=0(对带符号数即为正数)。