第二章 8086 系统结构

44
第第第 8086 第 第第 8086CPU 第第 8086 第第 8086 第第第 8086 第 第第

Upload: francis-short

Post on 01-Jan-2016

84 views

Category:

Documents


0 download

DESCRIPTION

第二章 8086 系统结构. 8086CPU 结构 8086 引脚 8086 存储器 8086 系统配置. 本章学习要点. 寄存器用途 存储器分段 系统配置 时序. 2 、单总线、累加器结构。“单总线”指微处理器内部总线。. 8086CPU 结构. 16 位微处理器结构的特点:. 1 、引脚功能复用。如数据线双向,通过“读 / 写”控制实现数据的“读”或“ 写”。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第二章  8086 系统结构

第二章 8086系统结构

8086CPU结构8086引脚8086存储器8086系统配置

Page 2: 第二章  8086 系统结构

本章学习要点• 寄存器用途• 存储器分段• 系统配置• 时序

Page 3: 第二章  8086 系统结构

8086CPU结构

16 位微处理器结构的特点: 1 、引脚功能复用。如数据线双向,通过“读 / 写”控制实现数据的“读”或“ 写”。

3 、可控三态电路。微处理器的外部总线,即微型计算机的局部三总线允许同时连接多个部件 ( 如存储器、 I/O 接口等 ) ;这些部件都以可控三态电路与三总线连接,不工作时该三态电路处于高阻状态。 4 、总线分时复用。

2 、单总线、累加器结构。“单总线”指微处理器内部总线。

Page 4: 第二章  8086 系统结构

AH ALBH BLCH CLDH DL

SPBPDISI

暂存器

ALU

标志寄存器

CSDSSS

内部寄存器

ESIP

总线控制电路

8086 总线

(16 位 )

地址总线 (20 位 )

数据总线(16 位 )

1 2 3 4

指令队列EU

控制器

通用寄存器AXBXCXDX

ALU 数据总线

(16 位 )

队列总线

(8 位 )

执行单元 EU 总线接口单元 BIU

8086CPU 内部结构

Page 5: 第二章  8086 系统结构

8086CPU结构• 8086CPU 的内部结构由两部分组成:总线接口部

件 BIU 、执行部件 EU• BIU :是 CPU 与内存和 I/O 接口的信息传送;完

成由 16bit 段地址和 16bit 偏移地址形成 20bit 物理地址、总线控制逻辑、完成 CPU 与内存和 I/O接口的信息传送、从内存取指令代码后组成指令队列。负责取指令;存、取操作数。

• EU :负责分析指令、执行指令;进行算逻运算、偏移地址计算、向 BIU 提供指令执行结果的数据和偏移地址。

Page 6: 第二章  8086 系统结构

8086CPU 寄存器结构 寄存器是 CPU 内部的存储单元,可直接参与 CPU 的运算 (ALU 运算和地址运算 ) ,其速度比内部存储器快。

• 通用寄存器• 指针和变址寄存器• 段寄存器• 指令指针• 标志寄存器

Page 7: 第二章  8086 系统结构

通用寄存器

AH

DH

CLCH

BLBH

AL

DL

AX

BX

CX

DX

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

存放 8 位数据、 16 位数据或地址。

八个通用寄存器 /四个数据寄存器

Page 8: 第二章  8086 系统结构

指针 / 变址寄存器 SP ( 堆栈指针 )

BP ( 基址指针 )

DI ( 目的变址 )

SI ( 源变址 )

SP 在堆栈操作中指示栈顶的地址。 BP 是堆栈段操作数的地址或变址寻址的基址。

BP 、 SP 用于访问堆栈段的内存。

SI 、 DI 用于访问数据 / 附加段的内存。

SI 、 DI 在串操作中分别作为数据 / 附加段的源地址或目的地址的指针。

这四个寄存器只能按 16 位操作

Page 9: 第二章  8086 系统结构

段寄存器存放每一段的起始地址

DS ( 数据段 )

CS ( 代码段 )

ES ( 附加段 )

SS ( 堆栈段 )

8086/8088 有 20 位地址线,寻址能力为 1MB 。 8086/8088 内部寄存器为 16 位,只能存放 16 位地址, 16 位地址的寻址能力为 64KB 。

程序存放的区域 , CS×16+IP— 取指数据存放的区域 , DS×16+SP , BP , SI

堆栈操作存放的区域 , SS×16+SP— 堆栈串操作数据存放的区域 , ES×16+BP , DI

由段地址 (16 位 ) 和段内偏移地址 (16 位 ) 组合成 20 位数据在内存的物理地址。

Page 10: 第二章  8086 系统结构

指令指针寄存器 指令指针寄存器 IP ,存放下一条指令在代码段的段内偏移地址。程序运行中, CPU 自动修改 IP 的内容。

有效地址 16*CS+IP

Page 11: 第二章  8086 系统结构

标志位寄存器标志寄存器 PSW ,存放运算结果的特征6 位状态位, 3 位控制位

OF DF IF TF SF ZF AF PF CF

Carry 进位 / 借位标志:加减运算时最高位进位 / 借位, CF =1 。Parity 奇偶标志:运算结果中有偶数个“ 1” , PF = 1 。

Auxiliary 辅助进位标志:运算后低 4 位向高位有进位 AF = 1 。Zero 零标志:运算后各位全’ 0’ , ZF = 1 。Sign 符号标志:运算后最高位为’ 1’ , SF = 1 。Overflow 溢出标志:加减运算后的结果超出符号数表示范围, OF = 1 。

Page 12: 第二章  8086 系统结构

标志位寄存器 Interrupt enable 中断允许标志:已设置为 CPU 允许接受外部中断请求, IF = 1 。 Direction 方向标志:已设置为串操作指令为自动减 1 变址, DF = 1 。

Trap 单步标志:调试程序时已设置为单步操作。

Page 13: 第二章  8086 系统结构

8086 系统中逻辑地址组合

EA ( Effective Address )为有效地址,反映操作数的段内偏移地址。

操作类型 隐含段基值 可替换的段基值 偏移地址取指令 CS 无 IP

堆栈指令 SS 无 SP

BP 用作基地址寄存器 SS CS 、 DS 、 ES EA

通用数据读写 DS CS 、 ES 、 SS EA

字符串操作(源地址) DS CS 、 ES 、 SS SI

字符串操作(目的地址) ES 无 DI

Page 14: 第二章  8086 系统结构

8086CPU的工作模式 8086/8088CPU 有最小工作模式和最大工作模式之分。 最小工作模式:用于单机系统,系统控制信号全部由8086 直接提供。 最大工作模式:用于多机系统,系统控制信号由另设的总线控制器 8288 提供。

Page 15: 第二章  8086 系统结构

8086CPU 引脚功能8086 的 40 条引脚信号按功能可分为 4 部分 :地址总线、数据总线、控制总线以及其它(时钟与电源)。由于受当时工艺的限制,部分管脚采用了分时复用的方式。

Page 16: 第二章  8086 系统结构

最小模式下的引脚说明 AD15 ~ AD0 (Address Data Bus) :

地址 / 数据复用信号,双向,三态。在每个总线第一周期, AD15 ~ AD0 上为地址信号的低 16 位 A15 ~A0 ;数据周期, AD15 ~ AD0 上是数据信号 D15 ~D0 。

A16 / S3 ~ A19 / S6地址 / 状态复用信号,三态, 输出在每个总线第一周期时,作地址总线的高 4 位( A19 ~ A16 );其余是状态信号。8086 访问存储器,用 20 条地址线;访问 I/O ,用 16条地址线,这 4 位置“ 0” 。

Page 17: 第二章  8086 系统结构

S6 :为低电平 S5 指示中断允许 IF 状态

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

0 0 ES

0 1 SS

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

1 1 DS

Page 18: 第二章  8086 系统结构

BHE /S7 (Bus High Enable/Status) : 数据总线高 8 位使能和状态复用信号,输出在总线第一周期, 有效,表示数据线上高 8 位数据有效。该信号与 A0 (地址信号最低位)结合,以决定数据字是高字节工作还是低字节工作。其它周期是 输出状态信息 S7 。 S7 在 8086 中未定义。

BHE

Page 19: 第二章  8086 系统结构

同工作方式有关的控制信号

MN/

最小 / 最大方式控制线,用来控制 8086 的工作方式。接 +5V 时, 8086 处于最小方式;接地时, 8086 处于最大方式,构成一个多处理器或协处理器系统。

MX

Page 20: 第二章  8086 系统结构

脚 最大 最小 脚 最大 最小28 S2 IO/M 27 S1 DT/R

26 S0 DEN 30 RQ/GT0 HOLD

24 QS1 INTA 31 RQ/GT1 HLDA

25 QS0 ALE 29 LOCK WR

受工作模式影响的 8 个引脚

Page 21: 第二章  8086 系统结构

、 、 译码表操作类型( CPU 周期)

L L L 中断响应L L H 读 I/O端口L H L 写 I/O端口L H H 暂停H L L 取指H L H 读存储器(数据)H H L 写存储器H H H 无效(无总线周期)

1S

2S 1S 0S

0S2S

总线周期状态信号:三态、输出

Page 22: 第二章  8086 系统结构

R/DT DENIO/M在最小方式下是: 、 和

存储器 /IO 控制信号:输出、三态= H ,访问存储器; = L 访问 I/O端口。

IO/M

数据发送 / 接收信号:输出、三态= H , CPU 是进行写操作; = L 读操作

R/DT

数据允许信号:输出、三态,用作系统中总线收发器的允许控制信号。

DEN

Page 23: 第二章  8086 系统结构

和请求 / 允许总线访问控制信号:双向,前优先级高在最小方式下,是 HOLD 和 HLDA 。 HOLD 为保持请求信号:输入; HLDA 为保持响应信号:输出。

0GT/RQ 1GT/RQ

Page 24: 第二章  8086 系统结构

QS1 QS0 编码含义

0 0 无操作0 1 从队列中取第一个字节

1 0 队列已空

1 1 从队列中取后续字节

QS1 , QS0 :指令队列状态信号:输出

在最小方式下是 ALE 和 。ALE 是地址锁存允许信号:输出; 是中断响应信号:输出、三态。

INTA

INTA

Page 25: 第二章  8086 系统结构

LOCK 总线优先权锁定信号:输出、三态用来封锁外部处理器的总线请求,输出低电平时,外部处理器不能控制总线 ; 靠 LOCK 指令在程序中设置。在最小方式下,是 信号,输出、三态。WR

Page 26: 第二章  8086 系统结构

不受工作模式影响的控制引脚 读控制信号:三态、输出 READY准备就绪信号:输入。当被访问的部件无法

在 8086CPU规定的时间内完成数据传送时,该部件向 8086CPU发出 READY = L ,使 8086 处于等待状态,插入一个或几个等待周期 TW ;当被访问的部件可以完成数据传输时,被访问的部件将使READY = H (高电平), 8086CPU继续运行。

RD

Page 27: 第二章  8086 系统结构

INTR 中断请求信号:输入 NMI :不可屏蔽中断请求信号:输入 :等待测试控制信号:输入 RESET :复位信号:输入。

TEST

复位后标志寄存器 PSW 、段寄存器、指令指针 IP

以及指令队列清零,代码段寄存器 CS 为 FFFFH 。

CLK :时钟信号,输入VCC :电源 5V ( 5% )VSS : 地

Page 28: 第二章  8086 系统结构

8086存储器组织一、存储器地址的分段和物理地址形成

存储器地址空间 1MB , 20bit 地址线; ALU 的运算能力 16bit 。将整个存储器分为若干个逻辑段,每段内地址 16bit ,即最多地址空间 64KB 。

段地址 0000

段内偏移 ( 有效 ) 地址 0000

物理地址 (20bit)

16bit

16bit

20bit

Page 29: 第二章  8086 系统结构

二、存储器逻辑地址

存储器的物理地址是 20 位二进制数,无法用十六进制寄存器存放。 可以用二个无符号十六进制数按特定方式运算后得到20 位物理地址。这二个十六进制数分别是段地址和偏移地址。

存储器的任一个物理地址(绝对地址)由段地址和偏移地址 ( 或称段内有效地址 EA) 组成。

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

Page 30: 第二章  8086 系统结构

内存

IP

CS

SI 、 DI 、 BX

DS

SP 、 BP

SS

数据段

堆栈段

代码段

Page 31: 第二章  8086 系统结构

操作类型 隐含段地址 替换段地址 偏移地址取指令 CS 无 IP

堆栈操作 SS 无 SP

BP间址 SS CS 、 DS 、 ES 有效地址 EA

存取变量 DS CS 、 DS 、 ES 有效地址 EA

源字符串 DS CS 、 DS 、 ES SI

目标字符串 ES 无 DI

逻辑地址的来源

Page 32: 第二章  8086 系统结构

内存

字 (16bit) 数 据 地 址1422EH 。低位低地址,高位高地址

H( 高 8bit)

L( 低8bit)

14230H

1422FH

1422EH

1422DH

字节地址字节地址

三、字节地址和字地址

内存以字节为单位,字节数据 (8 位 ) 地址就是字节地址。 字数据为 16 位,需二个字节存储。低 8 位存放在低地址,高 8 位存放在高地址;字地址为低字节地址。原则上字地址使用偶地址。

Page 33: 第二章  8086 系统结构

四、堆栈的概念

堆栈是利用 RAM 区中某一指定区域 ( 由用户规定 ) ,用来暂存数据或地址的存储区。

堆栈存取数据的原则是“ 先进后出”,存取数据的方法是压入 (PUSH) 和弹出 (POP)等。

堆栈区的栈底是固定的最高地址,其栈顶根据堆栈数据的压入或取出的变化不断改变。栈顶是堆栈区的最低地址,用堆栈指针 SP 表示。

每执行一条 PUSH 指令,向堆栈压入 16bit 数据,每执行一条 POP 指令,从堆栈弹出 16bit 数据,

SP = (SP) - 2 。SP = (SP) + 2 。

Page 34: 第二章  8086 系统结构

(AX)=9536H (BX)=0475H

(AX)=0475H (BX)=9536H

1 、 MOV SP , 0100H2 、 PUSH AX3 、 PUSH BX4 、 POP AX5 、 POP BX

例:执行压栈和出栈的过程

00FAH

00FBH

00FCH

00FDH

00FEH

00FFH

0100H

00H

00H

00H

00H

00H

00H

00H0100H

1 、设栈底(SP)=0100H

00H 2 、 (AH)→00FFH (AL)→00FEH (SP)-2→SP (SP)=00FEH

36H

95H

00FEH

3 、 (BH)→00FDH (BL)→00FCH (SP)-2→SP (SP)=00FCH

75H

04H

00FCH

00FEH

4 、 (00FCH)→ AL (00FDH)→AH (SP)+2→SP (SP)=00FEH

00FCH

00FEH

75H

04H5 、 (00FEH) →BL (00FFH) →BH (SP)+2→SP (SP)=0100H

00FEH 36H

95H

0100H

Page 35: 第二章  8086 系统结构

8086最小系统配置

8284

8282*3

8286

I/O 接口

Vcc

Vcc

RES

CLK

MN/MXRDWR

IO/M

ALE

AD0-AD15

DT/RDEN

INTA

INTR

READY

RESET

8086CPU

STB

T

OE

OE

A16-A19

数据总线

存储器

地址总线 20 位

16 位

Page 36: 第二章  8086 系统结构

8086CPU时序指令周期、总线周期和时钟周期

指令周期( Instruction Cycle) :执行一条指令所需要的时间。 (一个指令周期由一个或若干个总线周期组成)

总线周期( Bus Cycle ) :CPU 从存储器或 I/O端口存取一个字节的时间,

即完成一个基本动作所需的时间。 时钟周期( Clock Cycle) :

时钟频率的倒数,是 CPU 的时间基准( T 状态) ( 8086 的主频为 5MHZ ,一个时钟周期为 200ns )

Page 37: 第二章  8086 系统结构

一个总线周期一般由四个 T 组成。 T1 :输出地址;T2 、 T3 :传送数据。若存储器或外设速度慢,可插入等待周期 Tw 。

若一个总线周期后不执行下一个总线周期,即总线上无数据传输操作,系统总线处于空闲状态,此时执行空闲周期。

T1 T2 T3 Tw Tw T4 T1 T2T4总线周期

Page 38: 第二章  8086 系统结构

T1 T2 T3 T4

CLK

M / IO 0=IO 1=M

A19/S6-A16/S3

A19-A16 S6-S3

AD15-AD0 A15-A0 DATA IN

ALE

RD

DT/R

DEN

存储器读时序

2 、 T1 上升沿

A19 ~ A0稳定, ALE锁存

读总线周期时序读总线: CPU 通过总线从存储器或 I/O端口读取数据

1 、 T1开始 (T1 下降沿 )

M/IO = 0 , I/0端口操作

M/IO = 1 ,存储器操作

ALE = 1 ,地址锁存

DT/R = 0 , CPU 读入

Page 39: 第二章  8086 系统结构

T1 T2 T3 T4

CLK

M / IO 0=IO 1=M

A19/S6-A16/S3

A19-A16 S6-S3

AD15-AD0 A15-A0 DATA IN

ALE

RD

DT/R

DEN

读总线周期时序

3 、 T2开始

RD = 0 ,存储器开始读

DEN = 0 , DB 上允许数据有效

4 、 T4开始

DB 上数据稳定。 RD 、DEN恢复为 1 , CPU获得数据

5 、 T4 结束

DT/R=1 ,存储器读周期结束

Page 40: 第二章  8086 系统结构

T1 T2 T3 T4

CLK

M/IO 0=IO 1=M

A19/S6-A16/S3

A19-A16 S6-S3

AD15-AD0 A15-A0 DATA OUT

ALE

WR

DT/R

DEN

写总线周期时序

写总线周期

2 、 T1 上升沿

A19 ~ A0稳定, ALE锁存

写总线: CPU 通过总线将数据写至存储器或 I/O端口。

1 、 T1开始

M / IO = 0 , I/0端口操作

M / IO = 1 , 存储器操作

ALE = 1 ,地址锁存

DT/R = 1 , CPU 写出

Page 41: 第二章  8086 系统结构

4 、 T4开始

数据已写至存储器

WR 、 DEN恢复为 1

5 、 T4 结束

写周期结束

T1 T2 T3 T4

CLK

M/IO 0=IO 1=M

A19/S6-A16/S3

A19-A16 S6-S3

AD15-AD0 A15-A0 DATA OUT

ALE

WR

DT/R

DEN

写总线周期时序

3 、 T2开始

WR = 0 ,存储器开始写

DEN = 0 , DB 上允许数据有效

Page 42: 第二章  8086 系统结构

CLK

HOLD

HLDA

T1 或 T4

总线请求和总线响应时序

总线保持周期直接传送 DMA 是一种 CPU 与 I/O端口数据传送的方式。

当外设需要 DMA 时,通过 DMA 控制器向 CPU发出总线请求HOLD = 1 信号。 CPU 在 CLK 的上升沿检测到 HOLD 后进入总线保持周期。 CPU交出总线 (悬空 ) 给 DMA 控制器使用, HOLA=1响应。当 DMA 结束, HOLD = 0撤销。 CPU 在 CLK 的上升沿检测到

HOLD 后退出总线保持周期。收回总线, HLDA = 0 。

Page 43: 第二章  8086 系统结构

中断响应周期中断是另一种 CPU 与 I/O端口数据传送的方式。

T1 T2 T3 T4

CLK

T1 T2 T3 T4

ALE

中断类型INTA

AD15-AD0

中断响应周期时序

中断请求信号有效,且 CPU开中断,则 CPU 在执行完当前指令后,响应中断。在响应中断时, CPU 执行两个中断响应周期。

在每一个中断响应周期,都给出中断响应信号 INTA ,第一个响应周期,使 AD15~AD0浮空;第二个响应周期,被响应的外设应将中断类型号送到数据线上, CPU 从数据线读入中断类型。

Page 44: 第二章  8086 系统结构

第二章练习• 5 , 10 , 11 , 12 , 15