现代微型计算机 与接口教程 (第二版)

95
现现现现现现现 现现现现现 现现现现 () 现现现现现现“现 现”现现现现现现现 现现现现现现现现现现现现现现现现现 现现现 现现

description

杨文显 主编. 现代微型计算机 与接口教程 (第二版). 普通高等教育 “ 十一五 ” 国家级规划教材 普通高校本科计算机专业特色教材精选. 总 目 录. 第1章微型计算机与微处理器 第2章存储器 第 3 章微型计算机输入输出接口 第 4 章微型计算机的中断系统 第 5 章可编程接口芯片 第 6 章 DMA 传输 第 7 章数 / 模与模 / 数转换 第 8 章 现代微型计算机 第 9 章 PC 系列微型计算机外部设备接口 第1 0 章 微型计算机总线 第1 1 章 Windows 环境下输入输出程序设计. - PowerPoint PPT Presentation

Transcript of 现代微型计算机 与接口教程 (第二版)

Page 1: 现代微型计算机 与接口教程 (第二版)

现代微型计算机与接口教程(第二版)

普通高等教育“十一五”国家级规划教材普通高校本科计算机专业特色教材精选

杨文显 主编

Page 2: 现代微型计算机 与接口教程 (第二版)

总 目 录第 1 章 微型计算机与微处理器第 2 章 存储器 第 3 章 微型计算机输入输出接口第 4 章 微型计算机的中断系统第 5 章 可编程接口芯片第 6 章 DMA 传输第 7 章 数 / 模与模 / 数转换第 8 章 现代微型计算机第 9 章 PC 系列微型计算机外部设备接口 第 10 章 微型计算机总线第 11 章 Windows 环境下输入输出程序设计

Page 3: 现代微型计算机 与接口教程 (第二版)

第 1 章 微型计算机与微处理器

1.1 微型计算机

1.2 8086/8088 微处理器结构

1.3 8086/8088 微处理器子系统

1.4 8086/8088 微处理器的工作时序

Page 4: 现代微型计算机 与接口教程 (第二版)

1.1 微型计算机

1.1.1 电子计算机的基本组成

电子计算机的基本结构特点:

• 存储程序原理:把程序事先存储在计算机内部,计算机通过执行程序实现高速数据处理。

• 五大功能模块:电子数字计算机由运算器、控制器、存储器、输入设备、输出设备这些功能模块组成。

Page 5: 现代微型计算机 与接口教程 (第二版)

1.1.1 电子计算机的基本组成

图 1-1 计算机的基本组成

存储器

运算器

控制器

输入设备 输出设备

Page 6: 现代微型计算机 与接口教程 (第二版)

存储器

运算器

控制器

输入设备

输出设备

中央处理器( CPU)

主机

外部设备

电子计算机

Page 7: 现代微型计算机 与接口教程 (第二版)

1.1.2 微型计算机• 微型计算机在基本结构和基本功能上与计算机大致相同。

• 由于微型计算机采用了大规模和超大规模集成电路组成的功能部件,使微型计算机在系统结构上有着简单、规范和易于扩展的特点。

• 微型计算机由微处理器、存储器、输入输出接口电路组成。

• 连接这些功能部件的是三组总线:数据总线、地址总线和控制总线。

Page 8: 现代微型计算机 与接口教程 (第二版)

图 1-2 微型计算机的基本结构

ROM RAM I/O接口

外设

微处理器

地址总线AB

数据总线DB

控制总线CB

Page 9: 现代微型计算机 与接口教程 (第二版)

1 . 微处理器 微处理器( MPU ):微型计算机的中央处理器,亦称 CPU 。

2 . 存储器 • 微型计算机的存储器采用集成度高、容量大、体积小、功耗低的半导体存储器芯片构成。

• 根据能否写入信息 ,存储器分为 RAM 和 ROM 。

Page 10: 现代微型计算机 与接口教程 (第二版)

• 随机存取存储器( RAM )又称读写存储器:随机存取:可以根据需要读写任意位置上的内容,而不像磁盘一样必须成块地顺序读写。

可读可写:随机存储器中的信息可以读出,也可以写入。易失性:断电后储存的信息自动消失,是易失性存储器。用途:用于存放当前正在使用的程序和数据。

• 只读存储器 (ROM) :只读:信息在一般情况下只能读出,不能写入和修改非易失性:断电后原信息不会丢失,是非易失性存储器,用途:用来存放固定的程序和数据表格。

Page 11: 现代微型计算机 与接口教程 (第二版)

3 . 输入输出接口电路 • 介于计算机和外部设备之间的电路称为输入输出接口电路。• 微型计算机的接口普遍采用大规模集成电路芯片,大多数

接口芯片是可编程的。4 . 总线 • 总线是一组公共的信号传输线,用于连接计算机各个部件。• 位于芯片内部的总线称为内部总线。• 连接微处理器与存储器、输入输出接口,用以构成完整的

微型计算机的总线称为系统总线(有时也称外部总线)。• 微型计算机的系统总线分为系统总线分为数据总线、地址总线和控制总

线三组。

Page 12: 现代微型计算机 与接口教程 (第二版)

• 数据总线:用于传送数据信息,数据总线是双向总线。

• 地址总线:用于发送内存地址和 I/O接口的地址。

• 控制总线:传送各种控制信号和状态信号,使微型计算机

各部件协调工作。

• 微型计算机采用标准总线结构,提高了微机系统的通用性

和可扩展性。

Page 13: 现代微型计算机 与接口教程 (第二版)

1.2 8086/8088 微处理器结构

1.2.1 8088/8086 微处理器内部结构

8086 CPU 由指令执行部件 EU 总线接口部件 BIU两个部份组成。

• 指令执行部件 EU 主要功能是执行指令。• 总线接口部件 BIU 主要功能是连接 CPU 内部总线和外部系统总线,访问存储器和外部接口。

Page 14: 现代微型计算机 与接口教程 (第二版)

图 1-3 8086 微处理器内部结构

AH ALBH BLCH CLDH DL

BPSPSIDI

AXBXCXDX

暂 存 器

标志寄存器

ALUEU控制器

C SD SS SE SI P

内部暂存器

1 2 3 4 5 6

总线控制逻辑

地址加法器

20地址总线( 位)

数据总线

16( 位)

8086总线

指令队列队列总线

8( 位)

ALU 16数据总线( 位)

Σ通用寄存器

指令执行部件(EU) 总线接口部件(BIU)

Page 15: 现代微型计算机 与接口教程 (第二版)

物理地址• 访问存储器的实际地址称为物理地址,用 20 位二进制表示。

• 物理地址的位数由地址总线的位数决定

• 物理地址的位数决定了该计算机能够连接的存储器的数量:

• 例如: 16 根地址线最多能连接 216=64KB 内存储器; 20 根地址线最多能连接 220=1MB 内存储

器 .

Page 16: 现代微型计算机 与接口教程 (第二版)

逻辑地址

• EU 送来的存储器地址称为逻辑地址,由 16 位“段基址”和 16 位 “偏移地址”(段内地址)组成。

• 段基址表示一个段的起始地址的高 16 位。

• 偏移地址表示段内的一个单元距离段开始位置的距离。因此,偏移地址也称为段内地址。

• 例如, 2345H∶1100H 表示 :

段基址为 2345H (这个段的起始地址是23450H ), 段内偏移地址为 1100H 的存储单元地址。

Page 17: 现代微型计算机 与接口教程 (第二版)

地址转换• 地址加法器用来完成逻辑地址向物理地址的变换:

物理地址=段基址 ×16 + 偏移地址

• 上例中,逻辑地址 2345H : 1100H对应的物理地址是24550H 。

• 反之,物理地址 24550H ,它对应的逻辑地址可以是2455H : 0000H ,也可以是 2400H : 0550H 等。

• 这说明一个存储单元的物理地址是惟一的,而它对应的逻辑地址是不惟一的。

Page 18: 现代微型计算机 与接口教程 (第二版)

地址加法器

16偏移地址( 位)

16段寄存器( 位)

20物理地址( 位)

Σ

0000

图 1-4 地址加法器

Page 19: 现代微型计算机 与接口教程 (第二版)

指令执行部件 EU

• EU 的功能是执行指令。一般情况下 , 指令按照它存放的先后次序顺序执行, EU从指令队列中源源不断地取得指令代码,满负荷地连续执行指令。

• EU 中的算术逻辑运算单元 ALU 可完成 16 位或 8 位的二进制运算,运算结果通过内部总线送到通用寄存器,或者送往 BIU 的内部寄存器中,等待写入存储器。

• EU 控制器负责从 BIU 的指令队列中取出指令,并对指令译码,根据指令要求向 EU 内部各部件发出控制命令以实现各条指令的功能。

Page 20: 现代微型计算机 与接口教程 (第二版)

总线接口部件 BIU

BIU 的功能:形成访问存储器的物理地址(由地址加法器完成);访问存储器取得指令 ,暂存到指令队列中等待执行;访问存储器或 I/O端口以读取操作数参与 EU 运算,或存放运算结果等 ;

产生外部总线的各种控制信号。

• BIU 内部有一个 6字节的指令队列。一旦指令队列中空出 2个字节, BIU将自动进行读指令的操作以填满指令队列。

• BIU 内部总线控制电路将 CPU 的内部总线与 CPU引脚所连接的外部总线相连。

Page 21: 现代微型计算机 与接口教程 (第二版)

8088 CPU 与 8086 CPU 的区别:

( 1 ) 8088 与外部交换数据的数据总线宽度是 8 位,而 EU 内部总线和寄存器仍是 16 位,所以把 8088称为准 16 位微处理器。

( 2 ) 8088 BIU 中指令队列长度只有 4 字节,只要队列中出现一个空闲字节, BIU就会自动地访问存储器,取指令来填满指令队列。

Page 22: 现代微型计算机 与接口教程 (第二版)

1.2.2 8086/8088 微处理器的寄存器

8086/8088 CPU 的内部寄存器如图 1-5• 通用数据寄存器:存放运算原始 / 中间结果• 指针和变址寄存器:存放存储器地址• 控制寄存器:存放程序地址和其他控制信息• 段寄存器:存放各段的信息

Page 23: 现代微型计算机 与接口教程 (第二版)

图 1-5 8086/8088 CPU 内部寄存器

AH ALBH BLCH CLDH DL

AXBXCXDX

累加器基址寄存器计数器数据寄存器

SPBPSIDI

堆栈指针基址指针源变址目的变址

CSDSSSES

IPFLAGS

指令指针标志寄存器

代码段数据段堆栈段附加段

15 8 7 0

15

15

15 0

0

0

通用数据寄存器

指针和变址寄存器

控制寄存器

段寄存器

Page 24: 现代微型计算机 与接口教程 (第二版)

1. 通用寄存器组8 个 16 位通用寄存器可分成两组:

• 一组由 AX 、 BX 、 CX 和 DX 构成,称作通用数据寄存器,用来存放 16 位的数据或地址。也可当作8 个 8 位寄存器使用。 8 位寄存器只能存放数据。AX 称为累加器BX 称为基址寄存器CX 称为计数寄存器DX 称为数据寄存器

Page 25: 现代微型计算机 与接口教程 (第二版)

• 另一组 4个 16位寄存器,主要用来存放操作数的偏移地址(即操作数的段内地址)

SP 称为堆栈指针寄存器BP 称为基址指针寄存器SI 称为源变址寄存器DI 称为目的变址寄存器(变址寄存器内存放的地址在数据传送完成后,具有自动修改的功能。例如:传送 1 字节数据后把地址加 1 ,为下次传送做好准备,变址寄存器因此得名。 )

Page 26: 现代微型计算机 与接口教程 (第二版)

2 . 段寄存器 • 8086/8088 CPU 总线接口部件 BIU 中设置有 4个 16位段寄存器:代码段寄存器 CS ,数据段寄存器DS ,附加段寄存器 ES 和堆栈段寄存器 SS 。代码段:存放程序指令。 CS 中存放的是现在正在执行的程序段的段基址。程序代码超过 64K 时,需要分成几个段存放。

数据段用于存放当前使用的数据。需要第二个数据段时可以使用附加段。

堆栈段是内存中的一块存储区,用来存放专用数据。例如,调用子程序时的入口参数,返回地址等,这些数据都按照“先进后出”的规则进行存取。 SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。

Page 27: 现代微型计算机 与接口教程 (第二版)

3 . 标志寄存器 FLAGS

8086/8088 CPU 中设置了一个 16 位标志寄存器 FLAGS ,用来存放运算结果的特征和控制标志,其格式如下:

Page 28: 现代微型计算机 与接口教程 (第二版)

FLAGS 中存放的 9 个标志位可分成两类:

• 一类叫状态标志,用来表示运算结果的特征,包括 CF 、 PF 、 AF 、 ZF 、 SF 和 OF ;

• 另一类叫控制标志,用来控制 CPU 的操作,包括 IF 、 DF 和 TF 。

Page 29: 现代微型计算机 与接口教程 (第二版)

状态标志位( 1 )( 1 ) ZF ( Zero Flag ) 零标志位。( 2 ) SF ( Sign Flag ) 符号标志位。( 3 ) PF ( Parity Flag ) 奇偶标志位。 PF=1 ,表示本次运算结果的低八位中有偶数个“ 1” ; PF=0 ,表示有奇数“ 1” 。PF 可以用来进行奇偶校验,或者用来生成奇偶校验位。

( 4 ) AF ( Auxiliary Carry Flag ) 辅助进位标志位。这个标志位只在 BCD 数运算中起作用。

Page 30: 现代微型计算机 与接口教程 (第二版)

状态标志位( 2 )( 5 ) CF ( Carry Flag ) 进位标志位。• 进行二个无符号数加法或减法运算后,如果 CF=1 ,表示运算的结果超出了该字长能够表示的数据范围。例如,执行 8 位数据运算后, CF=1 表示加法结果超过了 255 ,或者是减法得到的差小于零。

• 进行有符号数运算时, CF对运算结果没有直接意义。

( 6 ) OF ( Overflow Flag ) 溢出标志位。例如,进行 8 位运算时, OF=1 表示运算结果大于 +127 或小于- 128 。 OF 标志对无符号数的运算结果没有意义。

Page 31: 现代微型计算机 与接口教程 (第二版)

上述运算后:CF = C7 ( D7 位上的进位) = 0 (无进位);AF = C3 ( D3 位上的进位) = 1 (有辅助进位);PF = 1 (运算结果有 4 个 1 );SF = D7 = 1 (运算结果符号位为 1 );OF = C7 C6 = 0 1 = 1 ⊕ ⊕ (有溢出);ZF = 0 (运算结果不为 0 )。

( 1 )( AL) +( AH)

Page 32: 现代微型计算机 与接口教程 (第二版)

上述运算后:CF = 1 (有借位);AF = 1 (有辅助进位);PF = 1 (运算结果中有 6 个 1 );SF = 1 (符号位为 1 );OF = 0 (无溢出);ZF = 0 (运算结果不为 0 )。

( 2 )( AL) - ( AH)

Page 33: 现代微型计算机 与接口教程 (第二版)

运算产生的标志位由程序员根据需要选择使用:

• 如果参加运算的两个数是有符号数(用补码表示),可以用 OF判断结果是否产生溢出,这时不必关心 CF 的状态;

• 如果参加运算的两个数是无符号数,可以用 CF判断结果是否超出范围,无需关心 OF 的状态。

Page 34: 现代微型计算机 与接口教程 (第二版)

控制标志( 1 ) IF ( Interrupt Flag ) 中断允许标志位。 IF=1 ,

表示允许 CPU响应可屏蔽中断。IF 标志可通过 STI 指令置位(置 1 ),通过 CLI 指令复位(清零)。

( 2 ) DF ( Direction Flag ) 方向标志位。在串操作指令中,若 DF=0 ,表示串操作指令执行后地址指针自动增量,串操作由低地址向高地址进行; DF=1 ,表示地址指针自动减量,串操作由高地址向低地址进行。DF 标志位可通过 STD 指令置位,通过 CLD 指令复位。

( 3 ) TF ( Trap Flag ) 单步标志位。 TF=1 ,每条指令执行结束都会发生“单步”中断,用于程序调试。

Page 35: 现代微型计算机 与接口教程 (第二版)

4 . 指令指针寄存器 IP

• 8086/8088 CPU 中有一个 16 位指令指针寄存器IP ,用来存放将要执行的下一条指令在代码段中的偏移地址。

• 程序运行过程中, BIU 自动修改 IP 中的内容,使它始终指向将要执行的下一条指令。

• 程序不能直接访问 IP ,但是可通过某些指令修改IP 的内容。例如 , 执行转移指令时,会将转移的目标地址送入 IP 中,实现程序的转移。

Page 36: 现代微型计算机 与接口教程 (第二版)

四种段的寻址方式数据段 附加段

堆栈段 代码段

DS XY---

ES AB---

SP

CS 1指令

---

SS

2指令IP

Page 37: 现代微型计算机 与接口教程 (第二版)

1.3 8086/8088 微处理器子系统

1.3.1 8086/8088 微处理器的引脚及功能• 8086/8088 CPU 是十六位的微处理器,它向外的信号包含 16条数据线, 20条地址线,以及若干控制信号。

• 为了减少芯片引脚数量,部分引脚采用分时复用的方式,构成 40条引脚的双列直插式封装。

Page 38: 现代微型计算机 与接口教程 (第二版)

图 1-6 8086 微处理器的封装外形

GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0

NMIINTRCLKGND

Vcc(+5V)AD15

A16 /S3A17 /S4A18 /S5A19 /S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET

8086

微处理器

1

20 21

40

Page 39: 现代微型计算机 与接口教程 (第二版)

• 8086/8088 CPU 有两种不同的工作模式(最小模式和最大模式)。 8条引脚( 24~ 31 )在两种工作模式中,具有不同的功能,最大模式下被重新定义的控制信号写在括号中。

• 引脚信号的传输有以下几种类型:输出:信号从 CPU 向外部传送;输入:信号从外部送入 CPU ;双向:信号有时从外部送入 CPU ,有时从 CPU 向外部传送;

三态:除了高电平、低电平两种状态之外, CPU 内部还可以通过一个大的电阻阻断内外信号的传送, CPU 内部的状态与外部相互隔离,称为“悬浮态”。

Page 40: 现代微型计算机 与接口教程 (第二版)

1. 地址与数据信号引脚

( 1 ) AD15 ~ AD0 ( Address Data Bus ) 分时复用的地址 / 数据线。

( 2 ) A19/S6 ~ A16/S3 ( Address/Status ) 分时复用的地址 / 状态线。用作地址线时, A19 ~ A16 与 AD15 ~ AD0一起构成访问存储器的 20 位物理地址。 CPU 访问 I/O端口时, A19 ~ A16保持为“ 0” 。用作状态线时, S6 ~ S3用来输出状态信息,表示当前正在使用的段寄存器(表 1-1 )。

Page 41: 现代微型计算机 与接口教程 (第二版)

2 . 读写控制信号引脚

读写控制信号用来控制 CPU对存储器和 IO 设备的读写过程:

• 数据传输方向(读 / 写);• 传输种类(存储器还是 IO 设备);• 读写方式(奇地址字节 /偶地址字节 / 字);• 存储器 /IO 设备是否准备好的状态信号;• 分时总线上信号的类型等。

Page 42: 现代微型计算机 与接口教程 (第二版)

( 1 ) M/ ( Memory/IO ) 存储器或 I/O端口访问选择信号,三态输出。

( 2 ) ( Read ) 读信号。三态输出,低电平有效,表示当前 CPU 正在读存储器或 I/O端口。

( 3 ) ( Write )写信号。三态输出,低电平有效,表示当前 CPU 正在写存储器或 I/O端口。

( 4 ) READY 准备就绪信号。由外部输入,高电平有效,表示 CPU 访问的存储器或 I/O端口已准备好传送数据。当 READY无效时,要求 CPU插入一个或多个等待周期 TW,直到 READY 信号有效为止。

( 5 ) /S7 ( Bus High Enable/Status ) 总线高字节有效信号。三态输出,低电平有效。非数据传送期间,该引脚用作 S7,输出状态信息。

IO

RD

WR

BHE

Page 43: 现代微型计算机 与接口教程 (第二版)

8086CPU 有 16 根数据线 :

• 低 8 位数据线总是和偶地址的存储器或 IO端口相连接 , 这些存储器 /IO端口称为偶体。

• 高 8 位的数据线与奇地址的存储器或 IO端口相连接,这些存储器 /IO端口称为奇体。

• 有效表示 CPU 正在使用高 8 位的数据线对奇体的存储单元或 IO端口进行访问。它与最低位地址码 A0配合起来表示当前总线使用情况,如表 1-2 。

BHE

Page 44: 现代微型计算机 与接口教程 (第二版)

BHE AD0 总线使用情况

0 0 16位数据总线上进行字传送

0 1高 8位数据总线上进行字节传送

1 0低 8位数据总线上进行字节传送

1 1 无效

表 1-2 和 AD0 编码的含义BHE

Page 45: 现代微型计算机 与接口教程 (第二版)

( 6 ) ALE ( Address Latch Enable ) 地址锁存允许信号,向外部输出,高电平有效。

( 7 ) ( Data Enable ) 数据允许信号,三态输出,低电平有效。进行 DMA 传输时,被置为高阻态。

( 8 ) DT/ ( Data Transmit/Receive ) 数据发送 / 接收控制信号,三态输出。 CPU 写数据到存储器或 I/O端口时,输出高电平; CPU从存储器或 I/O端口读取数据时,为低电平。

DEN

R

Page 46: 现代微型计算机 与接口教程 (第二版)

3 . 中断控制信号引脚

这一组引脚传输中断的请求和应答信号。

( 1 ) INTR ( Interrupt Request ) 可屏蔽中断请求信号由外部输入,电平触发,高电平有效。 CPU 在每条指令的最后一个时钟周期对 INTR 进行测试,一旦测试到中断请求,并且当前中断允许标志IF=1 ,则暂停执行下一条指令转入中断响应周期。

Page 47: 现代微型计算机 与接口教程 (第二版)

( 2 ) ( Interrupt Acknowledge ) 中断响应信号。向外部输出,低电平有效。该信号表示 CPU已经收到并且响应外部发来的 INTR信号,要求请求中断的设备向 CPU 发送中断类型(代表该中断的一个编号)。

( 3 ) NMI ( Non Maskable Interrupt Request ) 不可屏蔽中断请求信号。由外部输入,边沿触发,正跳沿有效,不受中断允许标志的限制。这是一种比 INTR 级别高的中断请求。

INTA

Page 48: 现代微型计算机 与接口教程 (第二版)

4 . DMA 控制信号引脚DMA 传输是一种不经过 CPU ,在内存储器和 IO 设备之间直接传输数据的方法。进行 DMA 传输之前要向 CPU申请使用总线并取得认可。

( 1 ) HOLD ( Hold Request ) 总线请求信号。由外部输入,高电平有效。

( 2 ) HLDA ( Hold Acknowledge ) 总线请求响应信号。向外部输出,高电平有效。CPU 一旦测试到有 HOLD请求,就在当前总线周期结束后,使 HLDA 有效,立即让出总线使用权(所有三态总线处于高阻态,从而不影响外部的存储器与 IO 设备交换数据)。HOLD变为无效后, CPU 也将 HLDA 置成无效,并收回对总线的控制权。

Page 49: 现代微型计算机 与接口教程 (第二版)

5 . 其他引脚( 1 ) Vcc (电源) 8086 CPU 只需要单一的 +5V 电源,由 Vcc引脚输入。

( 2 ) CLK ( Clock ) 主时钟信号,输入。由 8284 时钟发生器产生。

( 3 ) MN/ ( Minimum/Maximum ) 工作模式选择信号。由外部输入,为高电平, CPU 工作在最小模式,为低电平, CPU工作在最大模式。

( 4 ) RESET 复位信号。由外部输入,高电平有效。RESET复位信号通常由计算机机箱上的复位按钮产生;RESET 信号至少要保持 4 个时钟周期才有效。

( 5 ) TEST 测试信号。由外部输入,低电平有效。 CPU 执行WAIT 指令时,每隔 5 个时钟周期对 TEST 进行一次测试,若测试无效,则 CPU 处于踏步等待状态。有效后, CPU 执行 WAIT指令后面的下一条指令。

MX

Page 50: 现代微型计算机 与接口教程 (第二版)

6 . 8088CPU 的引脚8088 CPU 的大部分引脚名称及其功能与 8086 相同,所不同之处仅在于:

( 1 ) 由于 8088 的外部数据线只有 8条,因此分时复用地址数据线只有 AD7 ~ AD0 , AD15 ~ AD8专门用来传送地址而成为 A15 ~ A8 。

( 2 ) 第 34 号引脚在 8086 中是 BHE# ,由于 8088 只有 8 根外部数据线,不再需要此信号,在 8088 中它被重新定义为SS0 ,它与 DT/R# , IO/M# 一起用作最小方式下的周期状态信号。

( 3 )第 28 号引脚在 8086 中是 M/IO# ,在 8088 中改为 IO/M# ,使用的信号极性相反。

Page 51: 现代微型计算机 与接口教程 (第二版)

7. 最大模式下的 24-31 引脚 8086 CPU 工作在最大模式时, 24-31引脚有不同的定义。

( 1) S2 # ~ S0 # ( Bus Cycles Status ) 总线周期状态信号,三态输出。由 CPU 传送给总线控制器 8288 的总线周期状态信号。

S2# S1# S0 # 操 作 经总线控制器 8288 产生的信号0 0 0 中断响应 INTA# (中断响应)0 0 1 读 IO端口 IORC# ( IO 读)0 1 0 写 IO端口 IOWC#(IO 写 )

0 1 1 暂停 无1 0 0 取指令 MRDC#( 存储器读 )

1 0 1 读内存 MRDC#( 存储器读 )

1 1 0 写内存 WMTC#( 存储器写 )

1 1 1 无源状态 无

Page 52: 现代微型计算机 与接口教程 (第二版)

( 2 ) LOCK# 总线封锁信号。三态输出,低电平有效。有效时表示 CPU 不允许其他总线主控者占用总线。这个信号由软件设置。在指令前加上 LOCK 前缀时,则在执行这条指令期间保持有效,阻止其他主控者使用总线。

( 3 ) RQ# /GT0 # 、 RQ# /GT1 # ( Request/Grant ) 请求 / 同意信号。双向,低电平有效,输入低电平表示其他主控者向 CPU请求使用总线;输出低电平表示 CPU对总线请求的响应。两条线可同时与两个主控者相连, RQ# /GT0 # 比 RQ# /GT1 # 有较高优先级。

( 4 ) QS1 , QS0 ( Instruction Queue Status ) 指令队列状态。向外部输出。

Page 53: 现代微型计算机 与接口教程 (第二版)

1.3.2 最小模式下的 8086/8088 微处理器子系统 8086/8088 CPU 设置有两种工作模式:• 最小工作模式:

系统中只有一个 8086/8088 处理器; 所有的总线控制信号都由 8086/8088 CPU直接产生; 构成系统所需的总线控制逻辑部件最少 最小模式也称单处理器模式。

• 最大工作模式: 系统内可以有一个以上的处理器,除了 8086/8088 作为“中央处理

器”之外,还可以配置用于数值计算的 8087“ 数值协处理器”和用于 I/O管理的“ I/O 协处理器” 8089 ;

各个处理器发往总线的命令统一送往“总线控制器”,由它“仲裁”后发出。

• CPU两种工作模式由 MN/ 引脚决定。MX

Page 54: 现代微型计算机 与接口教程 (第二版)

1. 最小模式下 8086 微处理器子系统的构成CPU及其外围芯片合称为微处理器子系统。外围芯片的作用是:( 1 )为 CPU 工作提供适当的时钟信号,对外界输入的控制 /联络信号进行同步处理;

( 2 )分离 CPU 输出的地址 / 数据分时复用信号,得到独立的地址总线和数据总线信号,同时还增强它们的驱动能力。

( 3 )对 CPU 输出的控制信号进行组合,产生稳定可靠、便于使用的系统总线信号。

图 1-8 是以 8086 微处理器为核心构建的最小模式下的 微处理器子系统

Page 55: 现代微型计算机 与接口教程 (第二版)

图 1-7 8086 最小模式下的微处理器子系统

Vcc

M/IORDWR

INTRINTANMI

HOLDHLDA

ALEBHE

A19~A16

AD15~AD0

DENDT/R8086

微处理器

MN/MX

CLK

READY

RESET

CLK

READY

RESET

RESET READY

8284A

STB

DI

地址锁存器8282× 3( )

BHE

A19~A0

地址总线

DO

A B

数据总线收发器8286× 2( ) 数据总线

D15~D0

控制总线

OE

Page 56: 现代微型计算机 与接口教程 (第二版)

2 . 时钟发生器 8284

• 8284 通过外接晶振芯片产生 14.31MHz 的时钟信号,并对这个信号 3 分频,产生占空比为 1/3 的 4.77MHz 时钟信号 CLK 送往 8086 CPU 。

• 8284 同时产生 12 分频的 1.1918MHz 的外部时钟信号PCLOCK供其他外设使用。

• 8284还对外部输入的 *RESET 和 *READY 信号进行同步,产生与 CLK 同步的复位信号 RESET 和准备就绪信号 READY 送往 8086 。

Page 57: 现代微型计算机 与接口教程 (第二版)

3 . 地址锁存器 8282 (三片) • 地址锁存器用来锁存 8086 输出的地址信号。• 8282 是一个 8 位锁存器, STB 是它的数据锁存 / 选通信号。

8282具有三态输出功能, OE# 是数据输出允许端,为低电平时,锁存器的内容通过内部的三态缓冲器从引脚 DO7~DO0

输出。• 图 1-6 中, 8086 的 ALE 与 8282 的 STB 相连。这样, 8086

在它的分时引脚 AD15~AD0 , A19/S6 ~ A16/S3上输出地址信号时, 20 位地址被三片 8282锁存。在 8086 访问存储器 /IO 设备的整个周期里, 8282都会稳定地输出 20 位地址信号。

• 在最小模式下, 8282还同时锁存了 8086 输出的 BHE# 信号并送往系统总线。

• 8282 也可以用其他具有三态输出功能的锁存器代替。

Page 58: 现代微型计算机 与接口教程 (第二版)

4. 8286 总线数据收发器(二片)• 总线数据收发器用来对 CPU 与系统数据总线的连接进

行控制,它同时有增加系统数据总线驱动能力的作用。• 8286 是一种三态输出的 8 位双向总线收发器 /驱动器,具有很强的总线驱动能力。它有二组 8 位双向的输入 /输出数据线 A7~A0 和 B7~B0 。

• 8286 有二个控制信号:数据传送方向控制信号 T 和输出允许信号 OE# (低电平有效)。

OE# 为高电平时,缓冲器呈高阻抗状态, 8286 在两个方向上都不能传送数据。

OE# 为低电平 : T 为高电平时,实现 A 到 B 的传送; T 为低电平时,实现 B 到 A 的传送。

Page 59: 现代微型计算机 与接口教程 (第二版)

• 8286 用作数据总线驱动器时:

T端与 8086 的数据收发信号 DT/R# 相连,用于控制数据传送方向;

OE#端应与 8086 的数据允许信号 DEN# 相连,以保证只有在 CPU 需要访问存储器或 I/O端口时才允许数据通过 8286 。

二片 8286 的 A7~A0引脚与 8086 的 AD15~AD0 相连,而二组 B7~B0则成为系统数据总线。

• 如果系统规模不大,并且不使用 DMA 传输(这意味着总线永远由 8086独自控制),可以不使用总线收发器,将8086 的引脚 AD15~AD0直接用作系统数据总线。

Page 60: 现代微型计算机 与接口教程 (第二版)

5 . 最小模式下的系统控制信号

• 所有的总线控制信号, M/IO# 、 RD# 、 WR# 、 INTA# 、 ALE 、 DT/R# 、 DEN# 、 BHE# 、 HLDA 等均由 CPU直接产生,外部产生的 INTR , NMI , HOLD , READY 等请求信号直接送往 8086 。

• 信号 DT/R# 、 DEN# 、 ALE 主要用于对外围芯片的控制。• 常用的最小模式控制总线信号归纳如下:

控制存储器 /IO端口读写的信号: M/IO# 、 BHE# 、 RD# 、WR# 、 READY 。

用于中断联络和控制的信号: INTR 、 NMI 、 INTA# 。 用于 DMA联络和控制的信号: HOLD , HLDA 。

Page 61: 现代微型计算机 与接口教程 (第二版)

图 1-7 8086 最小模式下的微处理器子系统

Vcc

M/IORDWR

INTRINTANMI

HOLDHLDA

ALEBHE

A19~A16

AD15~AD0

DENDT/R8086

微处理器

MN/MX

CLK

READY

RESET

CLK

READY

RESET

RESET READY

8284A

STB

DI

地址锁存器8282× 3( )

BHE

A19~A0

地址总线

DO

A B

数据总线收发器8286× 2( ) 数据总线

D15~D0

控制总线

OE

Page 62: 现代微型计算机 与接口教程 (第二版)

6. 8088 最小模式下的微处理器子系统

• 最小模式下 8088 微处理器子系统的构成与 8086 相似,差异在于 8088 只有 8 根数据线:

• 由于只有 8 根数据线,只需要一片 8286就可以构成数据总线收发器。

• 同样由于 8088 只有 8 根数据线,因而没有 BHE#引脚,无需锁存和输出。

• 8088 存储器 /IO 选择信号极性与 8086 相反,为 IO/M# 。

Page 63: 现代微型计算机 与接口教程 (第二版)

1.3.3 最大模式下的 8086/8088 微处理器子系统

• 系统中可以有多个处理器。其中一个为主处理器,就是 8086/8088 CPU ,其他的处理器是协处理器。

• 常与主处理器 8086/8088 CPU 相配的协处理器有两个:

专用于数值运算的协处理器 8087 ;专用于 I/O操作的协处理器 8089 。它有一套专门用于

I/O 的指令系统,可以执行相应程序。因此,除了完成I/O操作外,还可以对数据进行处理。

Page 64: 现代微型计算机 与接口教程 (第二版)

1. 最大模式下 8086 微处理器子系统的构成

• 最大模式是一个多处理器系统,需要解决主处理器和协处理器之间的协调和对系统总线的共享控制问题。

• 硬件方面,增加了一个总线控制器 8288 ,由 8288对各处理器发出的控制信号进行变换和组合,最终由 8288产生总线控制信号,而不是由 CPU直接产生(这是与最小模式不同的)。系统总线信号的形成如图 1-9所示。

Page 65: 现代微型计算机 与接口教程 (第二版)

图 1-8 8086 最大模式下的微处理器子系统

BHEA19~A16

AD15~AD0

8086微处理器

MN/MX

RESET

READY

CLK

RESET

READY

CLK

RESET READY

8284A

STB

DI

地址锁存器8282× 3( )

BHE

A19~A0

地址总线

DO

A B数据总线收发器

(8286× 2)

数据总线

D15~D0

控制总线

OET

DT/RDENALES0S1S2CLKCEN

1

AENIOB

MRDCMWTCAMWC

IORCIOWC

AIOWCINTA

8288

S0S1S2

NMIINTRRQ/GT0RQ/GT1

+5V

OE

MEMR

MEMWIOR

IOWINTA

RQ/GT1RQ/GT0INTRNMIREADYRESET

Page 66: 现代微型计算机 与接口教程 (第二版)

2 . 最大模式下的系统控制信号( 1 ) 8288产生了 3 个存储器的读写控制信号:

• MRDC# ( Memory Read Command ) 用作存储器的读命令,相当于最小模式中 M/IO#=1 , RD#=0 二个信号的综合。在 IBM-PC 微型计算机内,系统总线上的该信号称为 MEMR# 。

• MWTC#(Memory Write Command ) , AMWC#(Advanced Memory Write Command) :这二个信号都是存储器的写命令,相当于最小模式中 M/IO#=1 , WR#=0 二个信号的综合。它们的区别在于 AMWC# 信号比MWTC#早一个时钟周期发出。在IBM-PC 微型计算机内,系统总线上的该信号称为MEMW# 。

Page 67: 现代微型计算机 与接口教程 (第二版)

( 2 ) 8288 产生 3 个独立的 IO 设备读写控制信号:

• IORC# ( IO Read Command ) 用作 IO 设备的读命令,相当于最小模式中 M/IO#=0 , RD#=0 二个信号的综合。在IBM-PC 微型计算机内,系统总线上的该信号称为 IOR# 。

• IOWC# ( IO Write Command ), AIOWC# ( Advanced IO Write Command ): 这二个信号是 IO 设备的写命令,相当于最小模式中 M/IO#=0 , WR#=0 二个信号的综合。同样, AIOWC# 信号比 IOWC#早一个时钟周期发出。在IBM-PC 微型计算机内,系统总线上的该信号称为 IOW# 。

Page 68: 现代微型计算机 与接口教程 (第二版)

( 3 ) 由于存在多个处理器, 8282 使用的地址锁存信号 ALE 不再由 8086直接发出,而是由总线控制器8288产生。( 4 ) 8286 使用的数据总线选通和收 / 发控制信号DEN 、 DT/R# 也由 8288产生。在最大模式中,数据总线收发器是必需的。

( 5 ) 最大模式下的中断和 DMA联络信号 外部的中断请求信号 NMI , INTR直接送往8086 。 8086 通过状态线 S0# 、 S1# 、 S2# 发出的中断应答信号,经 8288综合,产生 INTA# 送往控制总线。 DMA请求和应答信号通过 RQ#/GT0 # 、 RQ # /GT1

#直接与 8086 CPU 相连。

Page 69: 现代微型计算机 与接口教程 (第二版)

1.4 8086/8088 CPU 的工作时序1.4.1 时钟周期、指令周期和总线周期

1 . 时钟周期• 计算机中, CPU 的一切操作都是在系统主时钟

CLK 的控制下按节拍有序地进行的。• 系统主时钟一个周期信号所持续的时间称为时钟周期( T ),大小等于频率的倒数,是 CPU 的基本时间计量单位。

• 例如,某 CPU 的主频 f= 5MHz ,则其时钟周期 T = 1/f = 1/5MHz = 200ns ( 1ns=10-9S )。 若主频为 100MHz ,时钟周期为 10ns 。

Page 70: 现代微型计算机 与接口教程 (第二版)

2 . 总线周期• CPU 通过外部总线对存储器或 I/O端口进行一次读 / 写操作的过程称为总线周期。

• 为了完成对存储器或者 IO端口的一次访问, CPU 需要先后发出存储器 /IO端口地址,发出读或者写操作命令,进行数据的传输。所以,一个总线周期由若干个时钟周期( T )组成。

3 . 指令周期• CPU 执行一条指令的时间(包括取指令和执行该指令所

需的全部时间)称为指令周期。• 一个指令周期由若干个总线周期组成。不同指令的指令周期长度各不相同。

Page 71: 现代微型计算机 与接口教程 (第二版)

1.4.2 系统的复位和启动操作

• 8086/8088 CPU 正常工作时, RESET引脚应输入低电平。

• 一旦 RESET引脚变为高电平, CPU 进入复位状态, RESET引脚恢复为正常的低电平, CPU 进入启动阶段。

• 8086/8088CPU 要求加在 RESET引脚上的正脉冲信号至少维持 4 个时钟周期的高电平。如果是上电复位(冷启动)则要求复位正脉冲的宽度不少于 50μs 。

Page 72: 现代微型计算机 与接口教程 (第二版)

• 在复位状态, CPU初始化,内部的各寄存器被置为初态: CS寄存器置为全“ 1” ( FFFFH ),其他寄存器清零( 0000H ),指令队列清空。

• CPU复位时,代码段寄存器 CS被置为 FFFFH ,指令指针 IP被清 0 。所以, 8086/8088复位后重新启动时,便从内存的 FFFF0H 单元处开始执行指令。一般在FFFF0H 单元存放一条无条件转移指令,转移到系统程序的入口处。

• 复位时,由于标志寄存器被清 0 ,使 IF 也为 0 。这样,从 INTR引脚进入的可屏蔽中断被屏蔽。为此,系统程序在适当位置要用 STI 指令来设置中断允许标志(使 IF为 1 ),开放可屏蔽中断。

Page 73: 现代微型计算机 与接口教程 (第二版)

1.4.3 最小模式下的总线读写周期

• 8086/8088 CPU凡是与存储器或 I/O端口交换数据,或取指令填充指令队列时都需要通过 BIU 执行总线周期,即进行总线操作。

• 总线操作按数据传送方向可分为总线读操作和总线写操作。

Page 74: 现代微型计算机 与接口教程 (第二版)

图 1-9 8086 最小模式下的总线读周期时序

T1 T2 T3 T4

CLK

A19/ S6~A16/ S3

BHE/ S7

AD15~AD0

ALE

RD

DT/R

DEN

A15~A0 D15~D0

BHE输出

M/ I O

A19~A16 S6~S3

I / O高为读内存,低为读

Page 75: 现代微型计算机 与接口教程 (第二版)

1. 最小模式下的总线读周期

一个总线读周期由四个时钟周期(也称为状态)组成。T1状态 : M/IO# :指出 CPU 是从内存还是从 I/O端口读取数据,电平一直保持到总线读周期结束。

地址: CPU从( A19/S6 ~ A16/S3)和( AD15 ~ AD0)上发出读取存储器的 20 位地址或 I/O端口的 16 位地址。

ALE : CPU 从 ALE引脚输出一个正脉冲作为地址锁存信号。在 T1状态结束时,地址信号已稳定有效, ALE变为低电平, 20 位地址被锁入 8282 地址锁存器。

BHE# :如果 CPU 需要从内存的奇地址单元或者奇地址的IO端口读取数据,则输出 BHE# ( =0 )信号,它表示高8 位数据线上的数据有效。

DT/R# :使总线收发器 8286 处于接受状态。

Page 76: 现代微型计算机 与接口教程 (第二版)

T2状态:

地址:地址信息撤消, A19/S6 ~ A16/S3上输出状态信息 S6~S3

AD15 ~ AD0进入高阻态,为读取数据作准备 BHE#/S7: 输出状态 S7

RD#: 读信号 RD#变为低电平,通知存储单元或 I/O端口进行读操作,打开其数据缓冲器,将读出数据送上数据总线。

DEN# :变为有效低电平,用来开放总线收发器 8286 ,准备接收数据。

DT/R# :继续保持有效的低电平,处于接收状态。

Page 77: 现代微型计算机 与接口教程 (第二版)

T3状态:

• T3状态的一开始, CPU检测 READY引脚信号:若 READY 为低电平,则表示系统中挂接的存储器或外设不能如期送出数据,要求 CPU 在 T3 和 T4状态之间插入 1

个或几个等待状态 Tw 。READY 为高电平,进入 T4 。

TW状态 :• 进入 TW 状态后, CPU 在每个 TW状态的前沿(下降沿)采样 READY 信号: 若为低电平,则继续插入等待状态 TW 。 若 READY 信号变为高电平,表示数据已出现在数据总线上, CPU 从 AD15~AD0读取数据。

Page 78: 现代微型计算机 与接口教程 (第二版)

T4状态:

• 在 T3 ( TW)和 T4状态交界的下降沿处, CPU对数据总线上的数据进行采样,完成读取数据的操作。

• 在 T4 状态的后半周数据从数据总线上撤消。各控制信号和状态信号处于无效状态, DEN# 为高(无效),关闭数据总线收发器,一个读周期结束。

• 综上可知,总线读周期中: 在 T1状态送出地址及相关信号; T2发出读命令和 8286 控制命令; 在 T3 、 TW 等待数据的出现;在 T4状态将数据读入 CPU 。

Page 79: 现代微型计算机 与接口教程 (第二版)

2. 最小模式下的总线写周期 • 8086/8088 的写总线周期由 4 个时钟周期组成。当存储器或 I/O

设备速度较慢时,在 T3 和 T4之间插入 1 个或几个等待状态TW 。

与读周期不同:

• 写周期中,数据总线在 T2状态直接输出数据(无缓冲期)

• DT/R# 信号为高电平,表示本周期为写周期,控制 8286 向外发送数据。

• 写周期中 WR# 信号有效, RD# 信号变为无效,它们出现的时间类似。

Page 80: 现代微型计算机 与接口教程 (第二版)

图 1-10 8086 最小模式下总线写周期的时序

Page 81: 现代微型计算机 与接口教程 (第二版)

1.4.4 最大模式下的总线读写周期

• 最大模式下, 8086 的总线读写操作在逻辑上和最小模式下的读写操作是一样的。

• 不同的是,最大模式下应考虑总线控制器 8288产生的一些控制信号的作用。

Page 82: 现代微型计算机 与接口教程 (第二版)

1. 最大模式下的总线读操作• 图中带 * 的信号— *ALE 、 *DT / R 、 *MRDC 、 *IORC

和 *DEN都是由 8288 根据 CPU 的 S2 、 S1 、 S0组合产生的,它们用来控制地址锁存器和总线数据收发器的工作。

• 在每个总线周期开始之前一段时间, S2 、 S1 、 S0被置为高电平(无源状态)。进入无源状态,意味着 CPU 又可启动一个新的总线周期。

• 一旦这三个状态信号中任一个或几个从高电平变为低电平,表示一个新的总线周期开始了。

• 若存储器或外设速度较慢,则需要使用 READY 信号进行联络,即在 T3状态开始前 READY保持低电平(“未就绪”),在 T3 和 T4之间插入 1 个或多个 TW状态进行等待。

Page 83: 现代微型计算机 与接口教程 (第二版)

T1 T2 T3 TW 0( ~n) T4

CLK

A19/S6~A16/S3

BHE/S7

AD15~AD0

*ALE

*MRDC或*IORC

*DT/R

*DEN

A19~A6 S6~S3

A15~A0 D15~D0

BHE输出

S2--S0 无源状态S2--S0

图 1-11 8086 最大模式下的总线读周期时序

Page 84: 现代微型计算机 与接口教程 (第二版)

2. 最大模式下的总线写操作

• *ALE 和 *DEN 的时序和作用与最大模式下的总线读周期相同。

• 在 *DT / R# 上输出高电平有效信号。

• 两组写控制信号是为存储器或 I/O端口提供的,可供选用。

• 在写操作周期开始之前, S2 、 S1 、 S0已经按操作类型设置好相

应电平。

• 在 T3 ( TW)状态,全部恢复为高电平,进入无源状态,从而为

启动下一个新的总线周期作准备。

• 遇到慢速的存储器和外设时,可用 READY 信号联络。

Page 85: 现代微型计算机 与接口教程 (第二版)

T1 T2 T3 TW 0( ~n) T4

CLK

A19/S6~A16/S3

BHE/S7

AD15~AD0

*ALE

*AMWC或*AIOWC

*DT/R(高电平)

*DEN

A19~A6 S6~S3

A15~A0 D15~D0

BHE输出

S2--S0 无源状态S2--S0

*MWTC或*IOWC

图 1-12 8086 最大模式下的总线写操作时序

Page 86: 现代微型计算机 与接口教程 (第二版)

1.4.5 总线空闲状态(总线空操作)

• 如果 CPU 内的指令队列已满且执行部件 EU 又未申请访问存储器或 I/O端口,则总线接口部件 BIU就不必和总线打交道,从而进入空闲状态 TI 。

• 在空闲状态,虽然 CPU对总线不发生操作,但 CPU 内部的操作仍在进行,即执行部件 EU仍在工作,例如ALU 正在进行运算。从这一点上说,实际上总线空闲状态是总线接口部件 BIU 对 EU 的一种等待。

• 除了上述已经介绍的各个总线周期,还有中断总线周期、DMA 总线周期在后面相关章节介绍。

Page 87: 现代微型计算机 与接口教程 (第二版)

1.4.6 一条指令的执行过程

微处理器工作的过程就是执行指令的过程。一条指令从准备执行,到执行完毕,可以划分为三个阶段:

• 取指令阶段: CPU 内的总线接口部件( BIU )根据 CS:IP计算指令的物理地址;执行总线读周期,读取该指令;

• 等待阶段:指令进入指令队列,排队等待执行;• 执行阶段:排在前面的指令执行完毕,本指令进入执行部件

EU 后被执行,如果该指令执行中需要访问存储器,则向BIU 发出请求,执行需要的总线读、写周期,直到该指令的任务完成。

Page 88: 现代微型计算机 与接口教程 (第二版)

某微处理器执行如下指令 CS:0238H 0107H add [bx], ax 指令存放在代码段偏移地址 0238H 开始的位置上。 汇编后指令的机器代码为“ 0107H” , “01H” 是它的第一字节,存放了 add 指令的操作码。 “07H” 为第二字节,也称为“寻址方式”字节,存放了源、

目的操作数的寻址方式以及源操作数“ AX” 的编码。

CS IP DS BX AXCS:

0238H

CS:0239H

DS:0100H

DS:0101H

1010H

0238H

0AA0H

0100H

5678H

01H 07H 20H 30H

Page 89: 现代微型计算机 与接口教程 (第二版)

执行过程:

CS IP DS BX AXCS:

0238H

CS:0239H

DS:0100H

DS:0101H

1010H

0238H

0AA0H

0100H

5678H

01H 07H 20H 30H

图 1-13 指令“ add [bx], ax” 的执行过程

T m +0 T m +1 T m +2 T m +3 T m +4

B IU

B U

时钟 T n+0 T n+1 T n+2 T n+3 T n+4 T n+5 T n+6 T n+7 T n+8 T n+9 T n+10

① ② 取指令③

⑤ 取操作数④⑥

⑦ 写操作数

- - - - - - - -

指令“ add [bx], ax” 执行前:

Page 90: 现代微型计算机 与接口教程 (第二版)

取指令阶段:• Tm+0: BIU 准备取指令,通过地址加法将“ CS: IP” 转换为物理

地址 10338H 。• Tm+1~Tm+4: BIU 执行总线读周期,将指令“ add [bx], ax” 的机

器代码 0107H 读入指令队列。等待阶段:• Tm+5~Tn-1 :指令在指令队列中等待执行。

CS IP DS BX AXCS:

0238H

CS:0239H

DS:0100H

DS:0101H

1010H

0238H

0AA0H

0100H

5678H

01H 07H 20H 30H

T m +0 T m +1 T m +2 T m +3 T m +4

B IU

B U

时钟 T n+0 T n+1 T n+2 T n+3 T n+4 T n+5 T n+6 T n+7 T n+8 T n+9 T n+10

① ② 取指令③

⑤ 取操作数④⑥

⑦ 写操作数

- - - - - - - -

Page 91: 现代微型计算机 与接口教程 (第二版)

执行阶段 (1) :• Tn+0: EU 从指令队列取出该指令,存入指令寄存器,对该指令进

行译码,在得知目的操作数为存储器操作数之后,向 BIU 发出相关信息。

• Tn+1: BIU 根据收到的信息进行地址计算,将逻辑地址 DS:BX 转换成物理地址 0BA00H 。

• Tn+2~Tn+5: BIU 执行总线读周期,在 Tn+4和 Tn+5 交界处将0BA00H和 0BA01H 两字节内容 20H、 30H 读入 CPU 。

CS IP DS BX AXCS:

0238H

CS:0239H

DS:0100H

DS:0101H

1010H

0238H

0AA0H

0100H

5678H

01H 07H 20H 30H

T m +0 T m +1 T m +2 T m +3 T m +4

B IU

B U

时钟 T n+0 T n+1 T n+2 T n+3 T n+4 T n+5 T n+6 T n+7 T n+8 T n+9 T n+10

① ② 取指令③

⑤ 取操作数④⑥

⑦ 写操作数

- - - - - - - -

Page 92: 现代微型计算机 与接口教程 (第二版)

执行阶段 (2) :Tn+6: EU 执行加法运算,得到和 8689H( DS:[BX] +AX=

3020H+5678H )。 Tn+7~Tn+10: BIU 执行总线写周期,将和 8089H 写入 0BA00H和

0BA01H 两字节中。

CS IP DS BX AXCS:

0238H

CS:0239H

DS:0100H

DS:0101H

1010H

0238H

0AA0H

0100H

5678H

01H 07H 20H 30H

T m +0 T m +1 T m +2 T m +3 T m +4

B IU

B U

时钟 T n+0 T n+1 T n+2 T n+3 T n+4 T n+5 T n+6 T n+7 T n+8 T n+9 T n+10

① ② 取指令③

⑤ 取操作数④⑥

⑦ 写操作数

- - - - - - - -

Page 93: 现代微型计算机 与接口教程 (第二版)

假设该指令的取指令操作和其他指令的执行同时进行,那么8086CPU 为执行该指令一共花费了 11 个时钟周期(忽略①和②)。

8 个时钟周期执行总线读、写周期(⑤ , ⑦) ,读、写操作数 ;其余 3 个时钟周期: ③ 用于指令译码 ④ 用于计算操作数地址 ⑥ 用于加法计算。

CS IP DS BX AXCS:

0238H

CS:0239H

DS:0100H

DS:0101H

1010H

0238H

0AA0H

0100H

5678H

01H 07H 20H 30H

T m +0 T m +1 T m +2 T m +3 T m +4

B IU

B U

时钟 T n+0 T n+1 T n+2 T n+3 T n+4 T n+5 T n+6 T n+7 T n+8 T n+9 T n+10

① ② 取指令③

⑤ 取操作数④⑥

⑦ 写操作数

- - - - - - - -

Page 94: 现代微型计算机 与接口教程 (第二版)

习 题 11. 8086CPU 由哪几个部件构成?它们的主要功能各是什么?

2. 什么是逻辑地址?什么是物理地址?它们各自如何表示?如何转换?

3. 什么是“堆栈”?它有什么用处?在使用上有什么特点?

4. 设 X=36H , Y=78H ,进行 X+Y 和 X-Y 运算后FLAGS寄存器各状态标志位各是什么?

5. 按照传输方向和电气特性划分, CPU引脚信号有几种类型?各适用于什么场合?

6. 8086CPU 以最小模式工作,现需要读取内存中首地址为 20031H 的一个字,如何执行总线读周期?请具体分析。

Page 95: 现代微型计算机 与接口教程 (第二版)

7. 8086CPU 有几种工作方式?各有什么特点?8. 分析 8086CPU两个中断输入引脚的区别,以及各自的

使用场合。9. 什么是时钟周期、总线周期、指令周期?它们的时间长短取决于哪些因素?

10. 在一次最小模式总线读周期中, 8086CPU 先后发出了哪些信号?各有什么用处?

11. 结合指令“ OUT 21H, AL” ,具体叙述最大模式“总线写周期”总线上的相关信号。