第一章:微型计算机基础概论

微处理器、微型计算机和微型计算机系统三者之间有什么不同?

将运算器与控制器集成在一起,被称为微处理器。微型计算机是由微处理器、存储器、输入/输出接口电路和系统总线所构成的裸机系统。微型计算机系统是以微型计算机为主机,配上系统软件和外设之后而构成的计算机系统。三者之间是有很大不同的,微处理器是微型计算机的一个组成部分,而微型计算机又是微型计算机系统的一个组成部分。

说明微型计算机系统的工作过程。

微型计算机系统的基本工作过程是执行程序的过程,也就是 CPU 自动从程序存放的第 1 个存储单元起,逐步取出指令、分析指令,并根据指令所规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。

说明微型计算机由哪些功能部件组成?试说明“存储程序控制”的概念。

微型计算机的硬件主要由运算器、控制器、存储器、输入设备和输出设备五大基本部件组成。“存储程序控制”的概念:

(1) 计算机应由运算器、控制器、存储器、输入设备和输出设备五大基本部件组成。

(2) 计算机内部采用二进制来表示程序和数据。

(3) 将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令并加以执行,这就是存储程序的基本含义。

(4) 五大部件以运算器为中心进行组织。

冯·诺依曼计算机的基本设计思想是什么?

(1) 计算机应由运算器、控制器、存储器、输入设备和输出设备五大基本部件组成。

(2) 采用二进制,计算机内部采用二进制来表示程序和数据。

(3) 存储程序,将编好的程序和原始数据事先存入存储器中。

(4) 程序控制,计算机在工作时从存储器取出指令并加以执行,自动完成计算任务。

(5) 指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行。

第二章:微处理器与总线

简述 8086 与 8088 的区别。

  • CPU 内部的区别:8086 的指令队列缓冲器为 6 字节,8088 为 4 字节;
  • CPU 数据总线的区别:8086 的数据总线宽度为 16 位,8088 为 8 位;
  • CPU 控制线的区别:因 8086 可一次进行 16 位数据的操作,可用控制线BHE和地址线 A0 完成对奇偶存储库的选择,8088 一次只能对 8 位数据的操作,无控制线BHE的功能。 8086 与 8088 比较,存储器和 I/0 选择控制线的控制电平相反。

在 8086/8088 系统中,请分组说明有哪些寄存器?

  • 8 个通用寄存器 AX、BX、CX、DX、SP、BP、DI、SI,都可以用来暂存参加运算的数据或中间结果,但它们又有各自专门的用途。

    • 其中,4 个数据寄存器:
      • AX 为累加寄存器,
      • BX 为基址寄存器,
      • CX 为计数寄存器,
      • DX 为数据寄存器。
    • 4 个专用寄存器:
      • SP 为堆栈指针寄存器,
      • BP 为基址指针寄存器,
      • DI 为目的变址寄存器,
      • SI 为源变址寄存器。
  • 4 个段寄存器 CS、DS、SS、ES,

    • CS 代码段寄存器,用于装代码段的起始地址;
    • DS 数据段寄存器,用于装数据段的起始地址;
    • SS 堆栈段寄存器,用于装堆栈段的起始地址;
    • ES 附加段寄存器,用于装附加段的起始地址。
  • 2 个控制寄存器 FR、IP,用来存放有关的状态信息和控制信息。例如

    • 状态标志寄存器 FR 用来存放状态标志和控制标志;
    • 指令指针寄存器 IP 用来存放下一条要取指令的有效地址。

在 8086/8088 系统中,简述段与段寄存器的关系。

段在内存中,内存分段。段寄存器在 CPU 中,代码段的段基址放在 CS 中,数据段的段基址放在 DS中,堆栈段的段基址放在 SS 中,附加段的段基址放在 ES 中。

在 8086/8088 系统中,状态标志和控制标志分别有哪些?

状态标志位反应了当前运算和操作结果的状态条件,可作为程序控制转移与否的依据,它们分别是CF、OF、ZF、SF、AF 和 PF。

控制标志位用来控制 CPU 的操作,由指令进行置位和复位,它们分别是 IF、DF 和 TF。

在 8086/8088 系统中,6 个状态标志位的作用是什么?

6 个状态标志位为 CF、OF、ZF、SF、AF 和 PF。

  • CF 是无符号数运算时的进位或借位标志,无进位或借位时 CF=0,有进位或借位时 CF=1;
  • OF 为有符号数运算时的溢出标志,无溢出时 OF=0,有溢出时 OF=1;
  • ZF 是两数运算时的值 0 标志,运算结果不为 0,ZF=0,运算结果为 0,ZF=1;
  • SF 是有符号数运算时运算结果符号的标志,运算结果为正时 SF=0,运算结果为负时 SF=1;
  • AF 是辅助进位标志,若 D3 位到 D4 位无进位时(或 D4 位到 D3 位无借位时),AF=0,若 D3 位到 D4 位有进位时(或 D4 位到 D3 位有借位时),AF=1;
  • PF是运算结果的奇偶校验标志,若运算为奇个 1,则PF=0,若运算为偶个 1,则 PF=1。

在 8086/8088 系统中,3 个控制标志位的作用是什么?

3 个控制标志位是 IF、DF 和 TF。

  • IF 是可屏蔽中断中断允许控制位,当 IF=0 时,有可屏蔽中断请求但无中断响应产生,当 IF=1 时,有可屏蔽中断请求必有中断响应产生;
  • DF 是数据串操作时的自动增量方向控制位,当 DF=0 时,地址增量方向为自动加,当DF=1 时,地址增量方向为自动减;
  • TF 是指令单步调试控制位,当 TF=0 时,无指令单步调试操作,当 TF=1 时,有指令单步调试操作。

指令队列的作用是什么?

在执行指令的同时,从内存中取了下一条指令或几条指令,取来的指令放在指令队列中,这样它就不需要像以往的计算机那样让 CPU 重复的做取指和执行的工作了,从而提高 CPU 的利用率。

简述堆栈操作原理。

堆栈是一段特殊定义的存储区,用于存放 CPU 在堆栈操作时的数据。在执行堆栈操作前,需先定义堆栈段 SS、堆栈深度和堆栈栈顶指针 SP。数据的入栈出栈操作类型均为 16 位,入栈操作时,栈顶指针值先自动减 2(SP=SP-2),然后 16 位数据从栈顶处入栈;出栈操作时,16 位数据先从栈顶处出栈,然后栈顶指针值自动加 2(SP=SP+2)。

什么是基本总线周期?

基本总线周期由 4 个时钟周期组成,分别为 T1、T2、T3 和 T4。在 T1 时刻,CPU 的地址/数据复用线上发出地址信息,用于存储器单元或 I/O 端口的寻址。在 T2~T4 期间,在 CPU 的地址/数据复用线和存储器单元或 I/O 端口之间实现数据传送。扩展总线周期是在基本总线周期的基础上,根据特殊要求加入等待周期 Tw 和空闲周期 Tt。为了保证高速 CPU 与低速存储器或 I/O 接口间的数据读写,在控制线 READY 的控制下,可在 T3 与 T4 间插入一个或多个等待周期 Tw。当 CPU 暂时不需要经总线传送数据时,可在 T4 后插入一个或多个等待周期 Tt。

什么是地址锁存器?为什么要用地址锁存器?用什么信号控制锁存?

地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上的地址信息暂存起来。

由于 CPU 受芯片封装的限制,只有 40 个管脚,所以地址线和数据线只能采用复用的方式共同使用某些管脚。对存储器进行读取数据或写入数据时,存储器要求在这个过程中地址信息必须稳定提供给存储器, 而由于 CPU 地址线和数据线是复用的,就不可能在同一时刻具有地址和数据两种功能,这就需要在 CPU 提供地址信息时,将地址信息锁存起来,以保证下一个时刻,当这些复用的管脚起着数据线的功能时,存储器仍然有正确的地址信息。

通过 CPU 送出的 ALE 高电平信号来控制锁存的。锁存的信息包括这些复用管脚的地址(A19~A0)和BHE等信号。

什么是最小模式?什么是最大模式?

最小模式:在该系统中只有一个微处理器,所有的总线控制信号都由 8086 直接产生,因此,系统中总线控制电路被减到最少。

最大模式:在该系统中包含两个或者多个微处理器,其中一个主处理器就是 8086,其它处理器为协处理器,是协助主处理器工作的。

CPU 从功能上可分为哪两部分?这样设计的优点是什么?

从功能上分为两大部分,一是执行部件(EU),二是总线接口部件(BIU)。EU 负责执行所有的指令,向 BIU 提供指令执行的结果数据和地址,并对通用寄存器和标志寄存器进行管理。BIU 负责执行外部总线周期,也就是负责 CPU 与存储器和外设之间的信息交换。

CPU 分成两部分后,BIU 负责取指令,EU 负责执行指令,它们之间既互相独立又互相配合,即实现了取指令和执行指令的并行工作,大大提高了 CPU 和总线的利用率,从而提高了指令的处理速度。

简述流水线技术,怎样实现了最简单的指令流水线?

流水线是指在程序执行时,多条指令重叠进行操作的一种并行处理实现技术。它的并行处理是指完成一条指令的各个功能部件在同一时间上可以分别为多条指令的不同部分进行工作,通过提高各部件的利用率来提高指令的平均执行速度。它把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现,将多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其它子过程并行进行。

CPU 分成两部分后,BIU 负责取指令,EU 负责执行指令,它们之间既互相独立又互相配合,即实现了取指令和执行指令的并行工作,大大提高了 CPU 和总线的利用率,从而提高了指令的处理速度。也就是说, 在 EU 对一个指令进行执行时,BIU 可以同时对后续指令进行读取,这就是最简单的指令流水线技术。

在 8086 系统中,简述在最小工作模式下,如何响应一个总线请求?

外部总线主控模块经 HOLD 引线向 8086 发出总线请求信号,8086 在每个时钟周期的上升沿采样 HOLD 引线,若发现 HOLD=1,则在当前总线周期结束时,发出总线请求的响应信号 HLDA,8086 使地址、数据及控制总线进入高阻状态,让出总线控制权,从而完成响应过程。

什么是逻辑地址、偏移地址、物理地址?

逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成;偏移地址是指段内某个存储单元相对该段首地址的差值,是一个 16 位的二进制代码;物理地址是 8086 芯片引线送出的 20 位地址码,用来指出一个特定的存储单元。

2. 在 8086 系统中,存储器的逻辑地址是由哪两部分组成?物理地址由何器件如何生成?每个段的逻辑地址与寄存器之间有何对应关系?

存储器的逻辑地址由段地址和段内偏移地址两部分组成。

存储单元的物理地址由地址加法器生成,寻址时,CPU 首先将段地址和段内偏移地址送入地址加法器,地址加法器将段地址左移 4 位并与段内偏移地址相加,得到一个 20 位的物理地址。

代码段的段地址在 CS 寄存器中,段内偏移地址在 IP 寄存器中。数据段的段地址在 DS 寄存器中,段内偏移地址可能在 BX、BP、SI 或 DI 寄存器中。堆栈段的段地址在 SS 寄存器中,段内偏移地址在 SP 寄存器中。扩展段的段地址在 ES 寄存器中,段内偏移地址可能在 BX、BP、SI 或 DI 寄存器中。

在 8086 系统中,存储器为什么要分段?哪几个段与分段有关?

8086CPU 提供了 20 位的地址总线,可寻址 1MB 存储空间,而 8086CPU 内部寄存器都是 16 位的,寻址能力是 64KB;因此,为能实现对存储器寻址 20 位的物理地址,可将 1MB 的存储空间划分为若干个逻辑段, 每个逻辑段可寻址 64KB;各逻辑段之间可以部分、完全覆盖,连续、不连续等非常灵活。

与分段有关的寄存器有:CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)、ES(附加段寄存器)。

在 8086 系统中,存储器是如何组织的,它是如何与处理器总线连接的?

由于在 8086 系统中外部数据总线是 16 位的,而存储器又是按字节编址的,所以把 1MB 的存储空间分为两个 512KB 的存储体,分别命名为偶地址存储体和奇地址存储体。偶地址存储体的数据线与系统数据总线低八位相连,用 A0=0 作为选通信号。奇地址存储体的数据线与系统数据总线高八位相连,用BHE=0作为选通信号。CPU 可以访问任何一个存储体,读写一个字节,也可以同时访问两个存储体,读写一个字。

在 8086 系统中,地址线 A0 为什么不能参加存储器的片内选择线?

由于在 8086 系统中外部数据总线是 16 位的,而存储器又是按字节编址的,所以把 1MB 的存储空间分为两个 512KB 的存储体,分别命名为偶地址存储体和奇地址存储体。偶地址存储体的数据线与系统数据总线低八位相连,用 A0=0 作为选通信号。奇地址存储体的数据线与系统数据总线高八位相连,用BHE= 0作 为选通信号。CPU 可以访问任何一个存储体,读写一个字节,也可以同时访问两个存储体,读写一个字。所以 A0 就不能参加存储器的片内选择线,而是作为存储体的地址译码选择线。

在8086系统中,BHE信号的作用是什么?试说明当起始地址为奇地址、偶地址、一次读 写一个字节和一个字时,BHE和 A0的状态?

BHE信号的名称是高八位数据总线允许引脚。若BHE=0,则表示对一个字进行操作,即高八位有效。若BHE=1,则表示对一个字节有效,即高八位无效。

  • 当起始地址为奇地址时,一次读写一个字节时,BHE=0,A0状态为1。
  • 当起始地址为偶地址时,一次读写一个字节时,BHE=1,A0状态为0。
  • 当起始地址为奇地址时,一次读写一个字时,第一个总线周期发送,BHE 为0,A0状态为1,第二个总线周期发送BHE为1,A0状态为0。
  • 当起始地址为偶地址时,一次读写一个字时,BHE为0,A0状态为0.

在 8086 系统中,什么是存储器的规则字和非规则字?CPU 对一个规则字和非规则字读写时,有什么差别?

规则字是指在存储器中存储的起始地址为偶数(地址最低位 A0 为 0)的字数据,非规则字是指在存储器中存储的起始地址为奇数(地址最低位 A0 为 1)的字数据。

规则字读写需要一个总线周期,发送BHE为 0,A0 为 0,一个总线周期读写一个字;非规则字读写需

要两个总线周期,第一个总线周期读取偶存储体数据,发送BHE为 0,A0 为 1,取得高 8 位数据,第二个 总线周期读取奇存储体数据,发送BHE为 1,A0 为 0,取得低 8 位数据。

在8086 系统中,NMI、INTR、INTA、ALE、HOLD、HLDA 引脚的名称各是什么?

NMI 是不可屏蔽中断请求信号,INTR 是可屏蔽中断请求信号,INTA是中断响应信号,ALE 是地址锁存 允许信号,HOLD 是总线请求信号,HLDA 是总线请求响应信号。

在 8086 系统中,控制线 ALE 的作用是什么?

控制线 ALE 的作用是在总线周期 T1 时,完成地址/数据复用线上地址信息的分离。ALE 用于控制锁存器的锁存控制端,在 T1 时 ALE 输出高电平锁存地址信息,在 T2~T4 期间 ALE 输出低电平保持地址信息。

在8086 系统中控制线DEN、DT/R作用是什么?

控制线#DEN的作用是完成对双向数据缓冲器的控制。当DEN = 0 时,双向数据缓冲器片选有效,CPU 的 地址/数据复用线与数据总线连接有效。

控制线DT/R的作用是控制双向数据缓冲器中数据传送的方向。当DT/R=0时,数据从数据总线上流入 CPU 内。当DT/R= 1 时,数据从 CPU 内流出数据总线上。

在 8086 系统中,控制线RDWR的作用是什么?

控制线RDWR的作用是完成 CPU 对存储器单元或 I/O 端口的数据读写控制。当RD=0 且WR=1 时, CPU 经数据总线从选中的存储器单元或 I/O 端口中读取数据,当RD=1且WR =0时,CPU 经数据总线向选中 的存储器单元或 I/O 端口中写入数据。

在8086 系统中,控制线M/IO的作用是什么?

控制线M/IO的作用是确定在某一时刻 CPU 对存储器操作还是对 I/O 接口操作。当M/IO =0 时,CPU 对I/O 接口操作有效,当M/IO=1 时,CPU 对存储器操作有效。

“8086 执行了一个总线周期”是指 8086 做了哪些可能的操作?在一个典型的读存储器总线周期中,地址信号、ALE 信号、RD 信号、数据信号分别在何时产生?

“8086 执行了一个总线周期”是指:①、8086 可能从片外的存储器取指令;②、8086 可能对片外的存储器或 I/O 接口进行了一次读/写数据的操作。

在一个典型的读存储器总线周期中,地址信号在 T1 周期内产生,ALE 信号在 T1 周期内产生,RD 信号在 T2 周期内产生,数据信号一般在 T3 周期内产生,若存储器在 T3 内来不及提供数据,8086 会在 T3 周期后插入等待周期 TW,存储器将在某 TW 中给出数据。

论述指令周期、总线周期和时钟周期间的关系?如果在存储器读周期时,存储器的速度较慢,无法与 CPU 匹配应采取什么措施?

指令周期是指执行一条指令所需要的时间,不同指令的指令周期是不等长的。总线周期是指 CPU 与存储器或外设进行一次读/写操作所需要的时间。时钟周期(T 状态)是指时钟脉冲的重复周期,是 CPU 的 时间基准,由计算机的主频决定。一个指令周期通常由一个或若干个总线周期组成。对 8086 而言,一个总线周期至少由 4 个时钟周期组成。

如果存储器的存取速度较慢,可设计一个等待电路向 CPU 发出请求延长总线周期的 READY 信号,CPU 接到此信号后就在 T3 和 T4 之间插入若干个等待周期 TW。

什么是引脚的分时复用?请说出 8086CPU 有哪些引脚是分时复用的?

8086CPU 的数据线和地址线是分时复用的,所以常把 8086CPU 的总线称为多路总线,即某一时刻总线上出现的是地址,另一时刻总线上出现的是数据,正是这种引脚的分时复用的方法,才能使 8086CPU 用 40 条引脚实现 20 位地址、16 位数据及众多的控制信号和状态信号的传输。

8086CPU 的分时复用的引脚有:地址/数据复用引脚是:AD15~AD0,在总线周期的 T1 状态,传送地址信息,在其它状态则传送数据信息;地址/状态复用引脚是:A19/S6~A16/S3,在总线周期的 T1 状态, 传送地址的高 4 位,在其它状态则传送状态信息。