67
第第第 8086/8088 第第第第 第第 第第

第二章 8086/8088 微处理器

Embed Size (px)

DESCRIPTION

第二章 8086/8088 微处理器. 主讲:刘英. 主要内容. 2.1 8086/8088 微处理器的结构 2.2 8086/8088 的引脚功能 2.3 8086/8088 的总线结构 2.4 8086 最小模式的工作时序. 2.1 8086/8088 微处理器的结构. 2.1.1 8086/8088 微处理器的结构 8086/8088 微处理器是 Intel 公司推出的第三代 CPU 芯片,它们的内部结构基本相同,都采用 16 位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的 40 脚双列直插组件中。. - PowerPoint PPT Presentation

Citation preview

Page 1: 第二章  8086/8088 微处理器

第二章 8086/8088微处理器

主讲:刘英

Page 2: 第二章  8086/8088 微处理器

主要内容• 2.1 8086/8088 微处理器的结构• 2.2 8086/8088 的引脚功能• 2.3 8086/8088 的总线结构• 2.4 8086 最小模式的工作时序

Page 3: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构2.1.1 8086/8088 微处理器的结构• 8086/8088 微处理器是 Intel 公司推出的第三代 CPU 芯片,

它们的内部结构基本相同,都采用 16 位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的 40 脚双列直插组件中。

Page 4: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 8086 微处理器的一般性能特点:– 16 位的内部结构, 16 位双向数据信号线;– 20 位地址信号线,可寻址 1M 字节存储单元;– 较强的指令系统( 133 条指令);– 利用第 16 位的地址总线来进行 I/O 端口寻址,可寻址

64K个 I/O 端口;– 中断功能强,可处理内部软件中断和外部中断,中断

源可达 256 个;– 单一的+ 5V 电源,单相时钟 5MHz 。

Page 5: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 从功能上来看, 8086CPU 可分为两部分,即总线接口单元

BIU( Bus Interface Unit )和执行单元 EU( Execution Unit )。

Page 6: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 总线接口单元( BIU )• 组成:①段寄存器 (DS、 CS、 ES、 SS) ;

② 16 位指令指针寄存器 IP( 指向下一条要取出的指令代码 ) ; ③ 20 位地址加法器 ( 用来产生 20 位地址 ) ; ④ 6 字节 (8088为 4 字节 ) 指令队列缓冲器; ⑤总线控制逻辑。

• 功能:负责从内存中取指令,送入指令队列,实现 CPU 与存储器和I/O 接口之间的数据传送。

• 执行单元( EU )• 组成:① ALU( 算术逻辑单元 ) ;

②通用寄存器 (AX、 BX、 CX、 DX) ; ③专用寄存器 (BP、 SP、 SI、 DI) ; ④标志寄存器 (PSW) ; ⑤ EU 控制系统。

• 功能:负责分析指令和执行指令。

Page 7: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构2.1.2 8086 内部寄存器

AH AL

BH BL

CH CL

DH DL

代码段寄存器

数据段寄存器

堆栈段寄存器

附加段寄存器

堆栈指针寄存器

基址指针寄存器

源变址寄存器

目的变址害存器

指令指针

状态标志

AX

BX

CX

DX

SP

BP

DI

SI

控制寄存器

通用寄存

段寄存

CS

DS

SS

ES

IP

FLAGS

累加器

地址寄存器

计数器

数据寄存器

Page 8: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构1. 通用寄存器• 通用寄存器的包括数据寄存器、地址指针寄存器和变址寄

存器。① 数据寄存器• 4个 16 位的数据寄存器:累加器 AX 、基址寄存器 BX 、

计数寄存器 CX 、数据寄存器 DX• 特点:可以将数据寄存器当作一个 16 位寄存器,也可用

作两个 8 位寄存器( AL、 AH; BL、 BH; CL、 CH;DL、 DH )。

• 可以用来存放 8 位或 16 位二进制操作数,这些操作数可以是参加操作数、中间结果、操作数地址。但这四个寄存器又有自己特殊的用法。

Page 9: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• AX( Accumulator )累加器,多用于存放中间运算结果。

所有 I/O 指令必须都通过 AX 与接口传送信息。• BX( base Register )基址寄存器,在间接寻址中用于

存放基地址。• CX( count Register )计数寄存器,用于在循环或串操

作指令中存放循环次数或重复次数。• DX( Data Register )数据寄存器,在 32 位乘除法运算

时,存放高 16 位数;在间接寻址的 I/O 指令中存放 I/O 端口地址。

Page 10: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• ② 地址指针寄存器• SP( stack pointer )堆栈指示器,用于指示当前堆段中

栈顶所在的存储单元地址。• BP( base pointer )基址指示器,用于指示当前堆栈段

中一个数据区基址的偏移地址,通过它间接寻址可对堆栈段中的某个数据进行存取。

• BX与 BP 在应用上的区别– 作为通用寄存器,二者均可用于存放数据;– 作为基址寄存器, BX 通常用于寻址数据段; BP 则通常用于寻

址堆栈段。跳转到堆栈

Page 11: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• ③ 变址寄存器• SI( source Index )源变址寄存器• DI( Destination index )目标变址寄存器• 变址寄存器常用于指令的间接寻址或变址寻址。特别是在

串操作指令中,用 SI 存放源操作数的偏移地址,而用 DI存放目标操作数的偏移地址。

Page 12: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构2. 段寄存器• 用于存放逻辑段的段基地址(逻辑段的概念后面将要介

绍)• CS( Code Segment )代码段寄存器:

– 代码段用于存放指令代码• DS ( Date Segment )数据段寄存器 :• ES ( Extra Segment )附加段寄存器:

– 数据段和附加段用来存放操作数• SS( Stack Segment )堆栈段寄存器:

– 堆栈段用于存放返回地址,保存寄存器内容,传递参数。

Page 13: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构3. 指令指针 IP( Instruction Pointer )• 16 位专用寄存器, IP 指向当前需要取出的指令字节• 当 BIU 从内存中取出一个指令字节后, IP 自动加 1 ,指

向下一个字节• IP 指向的是指令地址的段内地址偏移量,又称偏移地址或

有效地址• 程序员不能对 IP 进行存取操作,程序中的转移指令、返

回指令以及中断处理能对 IP 进行操作

Page 14: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构4. 标志寄存器 FLAG• 8086 处理器的各种标志形成了一个 16 位的标志寄存器

FLAGS (程序状态字 PSW 寄存器)• 6 个状态标志位( CF、 PF、 AF、 ZF、 SF、 OF ),

表示前一步操作(如加、减等)执行以后, ALU所处的状态,后续操作可以根据这些状态标志进行判断,实现转移。

• 3 个控制标志位( IF、 DF、 TF ),可以通过指令人为设置,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。

OF

1115 12

DF

10

IF

9

TF

8

SF

7

ZF

6 5

AF

4 3

PF

2 1

CF

0

Page 15: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构① 状态标志位• 进位标志 CF ,反映算术运算后,最高位(字节操作为 D7 ,

字操作为 D15 )出现进位(或借位)的情况,有则为“ 1”

• 奇偶标志 PF ,反映操作结果( AL )中“ 1” 的个数情况,若为偶数, PF=1

• 辅助进位标志 AF ,反映一个 8 位量的低 4 位( D3 )向高 4 位( D4 )有无进位(或借位)的情况,有则置为“ 1” 。通常用于对 BCD 码算术运算结果的调整。

Page 16: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 零标志 ZF ,反映运算结果是否为零的情况,结果为零, ZF 置为“ 1”

• 符号标志 SF ,反映运算结果的符号情况,若结果为负数,SF 为“ 1”。 SF 的取值与运算结果最高位(字节操作为D7 ,字操作为 D15 )一致

• 溢出标记 OF ,反映带符号数运算结果是否超过机器所能表示的数值范围的情况,对字节运算为 -128~+127 ,对字运算为 -32768~+32767 。若超过上述范围则称为“溢出”, OF=1

Page 17: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 溢出标志 OF 和进位标志 CF 是两个意义不同的标志• 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;

• 溢出标志表示带符号数运算结果是否超出范围,运算结果已经不正确。

例 2.2: BBH + 6AH=( 1 ) 25H无符号数运算: 187+ 106= 293

范围外,有进位有符号数运算:- 69+ 106= 37

范围内,无溢出

例 2.1: 49H + 6DH= B6H无符号数运算: 73+ 109= 182 范围内,无进位有符号数运算: 73+ 109= 182 范围外,有溢出

Page 18: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构例 2.3 :

1101 0010+ 0110 0110 1 0011 1000

CF= 1 SF= 0ZF= 0 PF= 0AF= 0 OF=C7 C6⊕ = 0

例 2.4 :

0101 0001 0100 1011+ 0110 0010 0100 0110 1011 0011 1001 0001

CF= 0 SF= 1ZF= 0 PF= 1AF= 1 OF=C15 C14⊕ = 1

Page 19: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构② 控制标志位• 方向标志 DF ,在进行字符串操作时,每执行一条串操作

指令,对地址要进行一次调整,由 DF决定地址是增还是减。若 DF=1 ,则为减量;若 DF=0 则为增量

• 中断允许标志 IF ,表示系统是否允许外部的可屏蔽中断。若 IF=1 ,表示允许中断。 IF 对非屏蔽中断及内部中断请求不起作用

• 跟踪标志 TF ,当 TF=1 时, CPU每执行完一条指令,便自动产生一个内部中断,对程序进行逐条检查,常用于程序的调试

Page 20: 第二章  8086/8088 微处理器

执行部件

总线接口部件

通用寄存器四个专用寄存器 SP :堆栈指示器,用于指示当前堆段中栈 顶所在的存储单元地址。 BP :基址指示器,用于指示当前堆栈段中 一个数据区的偏移地址 . SI :源变址寄存器,存放源操作数的偏移 地址。 DI :目标变址寄存器,存放目标操作数的 偏移地址。

算术逻辑单元 ALU :主要是加法器。大部分指令的执行由加法器完成。标志寄存器:

16 位字利用了 9 位。 标志分两类:状态标志( 6 位) :反映刚刚完成的操作结果情况。控制标志( 3 位) : 在某些指令操作中起控制作用。

Page 21: 第二章  8086/8088 微处理器

20 位地址加法器

四个段寄存器: CS、 DS、 SS、 ES

CS管理代码段 ;DS管理数据段SS管理堆栈段 ;ES管理附加段 .

16 位的指令指针寄存器 IP :IP 中的内容是下一条指令对现行代码段基地址的偏移量,

6 字节的指令队列指令队列共六字节,总线接口部件 BIU 从内存取指令,取来的总是放在指令队列中;执行部件 EU 从指令队列取指令,并执行。

Page 22: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构2.1.3 存储器中的逻辑地址和物理地址1. 为什么要采用存储器“分段”技术?• 8086/8088 系统有 20根地址总线,它可以直接寻

址的存储器单元数为 220=1MB 。• 而微处理器中所有的寄存器都是 16 位的,内部

ALU 也只能进行 16 位运算,其寻址范围局限在216= 65536(64KB) 单元。

• 为了实现对 1MB 单元的寻址, 8086 系统采用了存储器分段技术。

Page 23: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构2. 存储器分段• 具体做法是,将 1MB 的存储空间分成许多逻辑段,每段

最长 64KB 单元,可以用 16 位地址码进行寻址。• 1MB 的存储空间最多可分为 64K 个段(段之间可相互重叠),至少可分成 16 个相互不重叠的段(每段容量为64KB ),如图 2-3 所示。

• 每个逻辑段在实际存储空间中的位置是可以浮动的,其起始地址可由段寄存器的内容来确定。实际上,段寄存器中存放的是段起始地址的高 16 位,称之为“段基值”( segment base value )。

• 段起始地址的计算和分配通常是由操作系统完成的,并不需要普通用户参与。

Page 24: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构

图 2-3 存储器的逻辑分段结构

Page 25: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构3. 物理地址和逻辑地址• 在有地址变换机构的计算机系统中,每个存储单

元可以看成具有两种地址:物理地址和逻辑地址。• 物理地址是信息在存储器中实际存放的地址( 20

位),它是 CPU访问存储器时实际输出的地址。物理地址与存储单元是一一对应关系。

• 逻辑地址是编程时所使用的地址( 16 位),对所给定的任一存储单元而言有逻辑地址由“段基址”和“段内偏移量”两部分构成。一个逻辑地址只能对应一个物理地址,而一个物理地址可以对应多个逻辑地址。

Page 26: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 段基址:说明逻辑段在内存中的起始位置。• 段内偏移量:说明主存单元距离段起始位置的偏

移量。• 段基址存放在段寄存器 CS、 SS、 DS和 ES 中。• 段内偏移量由 SP、 BP、 SI、 DI、 IP 以及相

应寄存器的组合而组成。• 逻辑地址表示形式:– 段基地址 : 段内偏移地址

Page 27: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• CS、 DS、 SS和其他寄存器组合指向存储单元的示意图

Page 28: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构4. 物理地址的计算方法• 物理地址的形成是通过 CPU 内部的 BIU 部件中的地址加

法器运算出来的。

• 上述由逻辑地址转换为物理地址的过程也可以表示成如下计算公式:

物理地址=段基值 ×10H+ 偏移量

Page 29: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 例 2.5 设代码段寄存器 CS 的内容为 4232H ,指

令指针寄存器 IP 的内容为 0066H ,即 CS=4232H, IP= 0066H ,则访问代码段存储单元的物理地址计算如下:

4232H×10H+ 0066H= 42386H

• 例 2.6 设数据段寄存器 DS 的内容为 1234H ,基址寄存器 BX 的内容为 0022H ,即 DS= 1234H,BX= 0022H ,则访问数据段存储单元的物理地址计算如下:

1234H×10H+ 0022H= 12362H

Page 30: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构5. 特殊的内存区域:• 8088/8086 系统中,有些内存区域的作用是固定

的,用户不能随便使用,如:– 中断矢量区: 00000H—003FFH共 1K 字节,用以存放 256 种中断类型的中断矢量,每个中断矢量占用 4个字节,共 256×4=1024=1K ;

– 显示缓冲区: B0000H—B0F9FH约 4000( 25×80×2 )字节,是单色显示器的显示缓冲区,存放文本方式,所显示字符的 ASCII 码及属性码; B8000H—BBF3FH约 16K 字节,是彩色显示器的显示缓冲区,存放图形方式下,屏幕显示象素的代码。

– 启动区: FFFF0H—FFFFFH共 16 个单元,用以存放一条无条件转移指令的代码,转移到系统的初始化部分。

Page 31: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构2.1.4 堆栈• 堆栈是在存储器中开辟的一个数据存储器,这个区域数据

的存取遵循“先入后出”的原则。• 把堆栈存储器的一端固定,称为栈底。另一端可活动,称

为栈顶。栈顶由 SP 堆栈批示器来描述。• 8086/8088 的堆栈操作只能是字操作。因此在进行入栈操

作时, SP会自动减 2 ,即 SP=SP-2 。出栈时 SP会自动加 2 ,即 SP=SP+2 。

• 常用于响应中断或子程序调用(存放返回地址、过程参数或需要保护的数据)

Page 32: 第二章  8086/8088 微处理器

2.1 8086/8088 微处理器的结构• 堆栈操作

-2 +2SP

SS SS

入栈前 出栈后高

低 低

高 高

12H

SS

F0HSP

入栈后

SPSP

SP F0H12H

SP

Page 33: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 8086和 8088 都是 16位 CPU ,具有 40 条引脚,采用双

列直插式封装。• 为了减少芯片的引线, 8086/8088 的许多引脚具有双重定义和功能,采用分时复用方式工作,即在不同时刻,这些引线上的信号是不相同的

• 8086/8088 的最大和最小两种工作模式可以通过引脚选择– 最大模式:两个或多个微处理器(多微处理器模式),一个主处

理器为 8086CPU ,另外的处理器可以是浮点数协助处理器 8087

或 I/O 处理器 8089 。– 最小模式:只有 8086CPU 一个微处理器(单处理器模式)。

• 引脚分类:地址总线、数据总线、控制总线、其它 ( 时钟与电源 )

Page 34: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 8086有 40 个引脚,其中第 33 (最小 / 最大模式)脚很关键,它是一条输入线,可以加高电平,也可以加低电平,由该线所加电平的高或低电平决定24-31 引脚的功能( 24-31 引脚括号内为最大模式功能)其他引脚不受第 33引脚的影响,我们把这部分引脚称为一般引脚。

Page 35: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 最小模式下的引脚说明• 地址 / 数据总线• AD15~ AD0 (Address Data Bus)• 地址 / 数据分时复用信号,双向,三态。在 T1 状态(地

址周期) AD15~ AD0 上为地址信号的低 16位 A15~A0 ;在 T2 ~ T3 状态(数据周期) AD15~ AD0 上是数据信号 D15~ D0 。

• 所谓三态是指总线输出可以有三个状态:高电平、低电平和高阻状态。当处于高阻状态时,该总线在逻辑上与所有连接负载断开。

跳转到时序分析

Page 36: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 地址 / 状态线• A19~ A16/S6~ S3 (Address/Status)• 地址 / 状态复用信号,三态输出。在总周期的 T1 状态

A19/S6~ A16/S3 上是地址的高 4 位。在 T2~ T4 状态,A19/S6~ A16/S3 上输出状态信息。

• 这些状态信息中, S6恒等于 0, S5 指示中断允许标志位 IF 的状态, S4、 S3 的组合指示 CPU 当前正在使用的段寄存器,其编码见表格。

S4 S3 当前正在使用的段寄存器0 0 ES

0 1 SS

1 0 CS 或未使用任何段寄存器1 1 DS

Page 37: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 控制总线• ( 1) BHE/S7 (Bus High Enable/Status)• 数据总线高 8 位使能和状态复用信号,三态输出。在总线周期 T1 状态, BHE 有效,表示数据线上高 8 位数据有效。在 T2~ T4 状态 BHE/S7 输出状态信息 S7。 S7在8086 中未定义。

Page 38: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 8086将 1M 字节存储体分为两个库,每个库的容量都是 512K 字节。其中与数据总线 D15—D8 相连的库全由奇地址单元组成,称高字节库或奇地址库, 并用 BHE 信号作为库选信号;另一个库与数据总线的D7—D0 相连,由偶地址单元组成,称低字节库或偶低址库,利用 A0

作为库选信号。显然,只需 A19—A1共 19 位地址用来作为两个库内的单元寻址。

Page 39: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• BHE和 A0的代码组合和对应的操作

BHE A0 操作 所用数据引脚

0 0 从偶地址单元开始读 /写一个字 AD15 ~ AD0

0 1 从奇地址单元或端口读 /写一个字节 AD15 ~ AD8

1 0 从偶地址单元或端口读 /写一个字节 AD7 ~ AD0

1 1 无效 --

0 1 从奇地址开始读 /写一个字 (在第一个总线周期将高8位数据送到 AD15 ~AD8,下一个周期将低 8位

数据送到 AD7 ~AD0 )

AD15 ~ AD0

1 0

Page 40: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 2)M/IO (Memory/IO ) • 存储器 /IO 端口控制信号,三态输出。用来区分当前操作是访问 I/O

端口还是存储器。 M/IO 为高电平时,表示当前 CPU正在访问存储器,M/IO 为低电平时,表示当前 CPU正在访问 I/O 端口。

• ( 3 ) RD (Read) • 读信号,三态输出,此引脚输出为低电平时,表示 CPU正在对存储或 I/O 端口进行读操作。

• ( 4 ) WR (Write) • 写信号,三态输出,此引脚输出为低电平时,表示 CPU正在对存储或 I/O 端口进行写操作。

M/IO RD WR 具体操作1 1 0 写存储器1 0 1 读存储器0 0 1 读外设

Page 41: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 5) ALE(Address Latch Enable)• 地址锁存允许信号,高电平有效。 CPU 通过该引脚向地

址锁存器 8282/8283发出地址锁存允许信号,把当前地址 / 数据复用总线上输出的是地址信息,锁存到地址锁存器 8282/8283 中去。 ALE 信号不能被浮空。

• ( 6) DEN (Data Enable)• 数据允许信号,三态输出,低电平有效。在 8086 系统中,

通常采用 8286或 8287 作为数据总线的驱动器,该信号为数据总线收发器 8286提供一个控制信号,表示 CPU当前准备发送或接收一项数据。

• ( 7 ) DT/R (Data Transmit/Receive)• 数据传送方向控制信号,三态输出。在 8086 系统中,用

DT/R 信号来控制数据驱动器的数据传送方向。高电平时,CPU 向存储器或 I/O 端口发送数据;低电平时, CPU 从存储器或 I/O 端口接收数据。 跳转到数据收发

跳转到地址锁存

Page 42: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 8) NMI (Non—Maskable Interrupt Reques• 不可屏蔽中断请求信号。由外部输入,上升沿触发,正跳沿有效。 CPU 一旦测试到 NMI请求信号,待当前指令执行完就自动从中断入口地址表中找到类型 2 中断服务程序的入口地址,并转去执行。

• ( 9) INTR( Interrupt Request) • 中断请求信号,由外部输入,电平触发,高电平有

效。 INTR 有效时,表示外部设备向 CPU发出中断请求,CPU 在每条指令的最后一个时钟周期对 INTR 进行测试,一旦测试到有中断请求,并且当中断允许标志 IF= 1 时,则暂停执行下条指令转入中断响应周期。

• ( 10) INTA (Interrupt Acknowledge) • 中断响应信号。向外部输出,低电平有效,表示 CPU响

应了外部发来的 INTR 信号。

Page 43: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 11) HOLD(Hold Request) • 总线保持请求信号,高电平有效,这是系统中的其它总线

部件向 CPU发来的总线请求信号输入引脚。 • ( 12) HLDA(Hold Acknowledge) • 总线保持响应信号,高电平有效,表示 CPU认可其他总

线部件提出的总线占用请求,准备让出总线控制权。

Page 44: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 13) READY • 准备就绪信号。由外部输入,高电平有效,它是由被访问

的内存或 I/O 设备发出的响应信号,当其有效时,表示CPU访问的存储器或 I/O 端口己准备好传送数据。当READY无效时,要求 CPU 插入一个或多个等待周期 Tw ,直到 READY 信号有效为止。

• ( 14) TEST • 测试信号。由外部输入,低电平有效。当 CPU 执行 WAIT

指令时 (WAIT 指令是用来使处理器与外部硬件同步 ) ,每隔 5 个时钟周期对 TEST 进行一次测试,若测试到该信号无效,则 CPU继续执行 WAIT 指令,即处于空闲等待状态;当 CPU测到 TEST输入为低电平时,则转而执行WAIT 的下一条指令。由此可见, TEST对WAIT 指令起到了监视的作用。

Page 45: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 15) RESET • 复位信号。由外部输入,高电平有效。 RESET 信号至少

要保持 4 个时钟周期, CPU 接收到该信号后,停止进行操作,并对标志寄存器 (FR)、 IP、 DS、 SS、 ES 及指令队列清零,而将 CS 设置为 FFFFH 。当复位信号变为低电平时, CPU从 FFFF0H开始执行程序,由此可见,采用 8086CPU 计算机系统的启动程序就保持在开始的存储器中。

• ( 16)MN/MX (Minimum/Maximum Mode Control)• 最大最小模式控制信号,输入。 MN/MX= 1 (+ 5V ),

CPU 工作在最小模式。 MN/MX= 0 (接地), CPU 则工作在最大模式。

• 其他 • ( 1) GND 地• ( 2) VCC 电源,接+ 5V

Page 46: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 最大模式下的引脚说明• 当 8086CPU 工作在最大模式系统时,有 8 个管脚重新定义 。

• ( 1) S2、 S1、 S0( Bus Cycle Status ,最小模式为M/IO、 D/TR、 DEN )

• 总线周期状态信号,三态输出,低电平有效。在最大模式下,这三个信号连接到总线控制器 8288 的输入端, 8288对它们进行译码后可以产生系统总线所需要的各种控制信号。三个信号的代码组合以及对应操作见下页表格:

Page 47: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能

S2 S1 S0 CPU状态 8288命令

0 0 0 中断响应 INTA

0 0 1 读 I/O 端口 IORC

0 1 0 写 I/O 端口 IOWC AIOWC

0 1 1 暂停 无1 0 0 取指令 MRDC

1 0 1 读存储器 MRDC

1 1 0 写存储器 MWTC AMWC

1 1 1 无作用 无

Page 48: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 2) RQ/GT0, RQ/GT1 (Request/ Grant)• 总线请求 / 总线响应信号,低电平有效。每一个引脚都具

有双向功能,既是总线请求输入也是总线响应输出。当该信号为输入时表示其它主控者向 CPU请求使用总线;当为输出时表示 CPU 对总线请求的响应信号。两条线可同时与两个主控者相连, RQ/GT0优先级高于 RQ/GT1 。

Page 49: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 3) LOCK 封锁信号• 总线封锁信号,三态输出,低电平有效。该信号有效

时, CPU锁定总线,不允许其他的总线控制设备申请使用系统。这个信号由软件设置,当在指令前加上 LOCK前缀时,则在执行这条指令期间 LOCK 保持有效,即在此指令执行期间, CPU 封锁其他总线控制设备使用总线。

Page 50: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• ( 4) QS1、 QS0(Instruction Queue Status) :• 指令队列状态输出信号。 QS1, QS0 组合起来表示前一

个时钟周期中指令队列的状态,根据该状态信号,从外部可以跟踪 CPU 内部的指令队列。 QS1、 QS0 的编码如表:QS1 QS0 编码含义

0 0 无操作0 1 从队列中取第一个字节1 0 队列已空1 1 从队列中取后续字节

Page 51: 第二章  8086/8088 微处理器

2.2 8086/8088 的引脚功能• 总结– 具有分时复用总线功能的引脚: AD0~AD15、 A16/

S3~A19/S6 、 BHE/S7 ;– 具有三态性的引脚:

AD0~AD15、 A16S3~A19S6

、 BHE/S7

、 RD、WR、M/IO、 DT/R、 DEN、 INTA 等;– 最大模式下和最小模式下含义不同的引脚: 24脚 ~31

脚;

Page 52: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式2.3.1 8086 的最小模式• 所谓最小模式,就是系统中只有一个 8086/8088微处理器,在这种情况下,所有的总线控制信号,都是直接由CPU产生的,系统中的总线控制逻辑电路被减到最少,该模式适用于小规模的微机应用系统。– MN/MX 端接 +5V ,决定了工作模式;– 有一片 8284A ,作为时钟信号发生器;– 有三片 8282或 74LS273 ,用来作为地址信号的锁存器,进行地

址信息分流;– 当系统中所连的存储器和外设端口较多时,需要增加数据总线的驱动能力,这时,需用 2片 8286/8287 作为数据总线收发器,将数据信息分流到数据总线。

Page 53: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式时钟发生器 / 驱动器 8 位通用数据

锁存器,分流20 位地址信息。

8 位双向数据缓冲器,分流数据。

Page 54: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式1. 时钟发生器 8284• 产生满足 8086 CLK 要求的占空比 1/3 的时钟信号,还对

复位信号 RESET 和准备好信号 READY 进行同步

EFI

F/C

RDY

RESCLK

X1 X2

8284A

READY

RESET

CLK

8086/8088

READY

RESET

510Ω

510Ω

控制总线

Page 55: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式2. 地址锁存• 8086 有地址信号 20 位, AD19~ AD0 , 一位高位数据线使能信号 BHE ,它们都是与数据或状态分时复用的信号,共 21 位。 采用 3片 8282 对地址信号进行锁存。

1 20

19

18

17

16

15

1413

12

1110

9

8

7

6

5

4

3

2

DI0

DI7

DI6

DI5

DI4

DI3

DI2

DI1

GND

OE

VCC(+5V)

8282

DO0

DO7

DO6

DO5

DO4

DO3

DO2

DO1

STB

STB 为选通脉冲输入端,当STB 上的脉冲信号由高变低时, DI0~ DI7 的信号被锁存。

OE 是允许输出控制端,当 OE为高时,输出端 DO0~ DO7呈高阻抗状态;为低时, DOi=DIi 。

Page 56: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式• 地址锁存器 8282与 8086 的连接

Page 57: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式3. 数据收发• 由于 8086 数据是 16 位的,需要 2片 8286/8287 双向数据收发器。• 作用:增加数据总线的驱动能力,将数据信息分流到数据总线上,作

总线收发器用。• 特点:三态输出, 8 位双向数据缓冲器。• 区别: 8286的 8 位输入信号和输出信号之间同相, 8287反相。

OE :输出允许信号,控制 8286何时传送数据。当其为低电平时,开启缓冲器;为高电平时,输出高阻。

T :数据传送方向控制信号T=1 :正向三态门接通,数据从 A流向BT=0 :反向三态门接通,数据从 B流向A

Page 58: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式• 地址锁存器 8282与 8086 的连接

补充:不用数据收发器时, ADl5~ AD0 可直接接存储器或 I/O 端口的数据线

Page 59: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式2.3.2 8086 的最大模式• 所谓最大模式,是指系统中至少包含两个微处理器,其中

一个为主处理器,即 8086/8086CPU ,其它的微处理器称之为协处理器,它们是协助主处理器工作的。该模式适用于大中型规模的微机应用系统。– 最小模式所拥有的配置;– 有一片 8288 总线控制器来对 CPU发出的控制信号进行变换和组合,以得到对存储器或 I/O 端口的读 /写信号和对锁存器 8282 及数据总线收发器 8286 的控制信号。

– 有 8259A (可选)用以对多个中断源进行中断优先级的管理,但如果中断源不多,也可以不用中断优先级管理部件。

Page 60: 第二章  8086/8088 微处理器

2.3 8086/8088 最小模式和最大模式

Page 61: 第二章  8086/8088 微处理器

2.4 8086 的总线操作和时序1. 基本概念• 总线操作:微处理器通过总线来进行取指令、存取操作数等操作• 工作时序:指令译码以后按时间顺序产生的确定的控制信号。• 时钟周期:时钟脉冲信号的一个循环时间叫一个时钟周期,又称为一

个“ T” 状态,是微处理器工作的最小时间单位。• 指令周期:执行一条指令所需要的时间。• 总线周期:完成一次对存储器或 I/O 端口的操作所需要的时间。

2. 总线操作分类• 总线读操作:取指令,读存储器,读 I/O 接口• 总线写操作:写存储器,写 I/O 接口• 总线请求响应• 中断响应

Page 62: 第二章  8086/8088 微处理器

2.4 8086 的总线操作和时序3. 时序分析• 基本的总线周期时序分析

1T 2T 3T wT 4T 1T 2T 3T 4T iT iT 1T 2T 3T wT wT 4T iT iT

用于等待存储器或I /O接口相应的等待状态

总线周期间的空闲状态一个总线周期

基本的总线周期由 4 个 T状态组成,记为: T1 、 T2 、 T3 、 T4等待时钟周期 Tw ,在总线周期的 T3和 T4 之间插入,总线处于等待状态空闲时钟周期 Ti ,在两个总线周期之间插入,总线处于空闲状态至少包含传送地址和传送数据两个过程。 T1, CPU输出地址; T2~ T4 ,数据传送。

Page 63: 第二章  8086/8088 微处理器

2.4 8086 的总线操作和时序• 最小方式下的读总线周期

一个总线周期T1 T3T2 T4

CLK

ALE

M/IO

RD

DT/R

DEN

地址, BHE 状态输出

地址输出 数据输入

低电平读 IO ,高电平读存储器

AD15~AD0

BHE/S7

A19/S6~ A16/S3

Page 64: 第二章  8086/8088 微处理器

2.4 8086 的总线操作和时序• 最小方式下的写总线周期

一个总线周期T1 T3T2 T4

CLK

AD15~AD0

BHE/S7

A19/S6~ A16/S3

ALE

M/IO

WR

DT/R

DEN

地址, BHE 状态输出

地址输出

低电平写 IO ,高电平写存储器

数据输出

Page 65: 第二章  8086/8088 微处理器

2.4 8086 的总线操作和时序

• 总线写操作时序与总线读操作时序基本相似,不同点有:– CPU 不是输出 RD 信号,而是输出 WR 信号。– DT/R整个总线周期为高电平,表示本总线周期为写周期,在接有数据总线收发器的系统中,用来控制数据传输方向。

– AD15~ AD0在 T2到 T4 状态输出数据,输出地址与输出数据为同一方向,无需像读周期那样要高阻态作缓冲,故 T2 状态无高阻态。

Page 66: 第二章  8086/8088 微处理器

2.4 8086 的总线操作和时序• 最小方式下的中断响应总线周期

– 响应条件: CPU的 INTR 引脚高电平, IF=1 。

1T 2T 3T 4T iT 1T 2T 3T 4TiT iT

ALE

INTA

AD7~AD0 中断类型

空闲状态在8086系统中一般为3个,而8088系统中没有

CPU发出 ALE 信号,作为地址锁存信号

第一个总线周期 第二个总线周期空闲状态( 8088无)

低电平,通知外设 CPU已接受其中断请求,同时使数据总线、地址总线浮空

被响应的外设向数据总线发送一个字节的中断类型号, CPU 读入后查中断向量表,找到中断服务程序入口地址,转去执行中断服务程序。

Page 67: 第二章  8086/8088 微处理器

作业• P31

– 2-1• 8086CPU由哪两部分组成?它们的主要功能各是什么?

– 2-4– 2-6– 2-8– 2-10– 2-11– 补充:

• 2-12 设 X=35H, Y=76H ,进行 X+Y和 X-Y 运算后,标志寄存器 FLAGS 的状态标志位各是什么?

• 2-13 若 8086CPU 工作于最小模式,试指出当 CPU将 AH 的内容送到物理地址为 91001H 的存储单元时,以下哪些信号应为低电平: M/IO 、 RD、WR、 BHD/S7 、 DT/R 。若CPU完成的是将物理地址 91000H 单元的内容读入 AL 中时,则上述哪些信号应为低电平。