第 2 章 8088/8086 微处理器

54
2 2 8088/8086 8088/8086 第第第第 第第第第 1

Upload: vartouhi-hansen

Post on 02-Jan-2016

303 views

Category:

Documents


8 download

DESCRIPTION

第 2 章 8088/8086 微处理器. 第 2 章 8086/8088 微处理器. 教学目的 熟悉 8088/8086 微处理器的结构及其外部引脚和功能 掌握 8088/8086 微机存储器的组织 了解 8088/8086 微处理器的两种工作模式 了解 8088/8086 微处理器的工作时序. CPU 是计算机系统的核心部件,控制和协调整个计算机系统的工作。基本功能: ⊙进行算术运算和逻辑运算; ⊙对指令进行译码、分析、执行指令所规定的操作; ⊙与存储器和 I/O 接口进行数据交换; ⊙少量数据的暂存; ⊙提供系统所需的定时和控制信号; - PowerPoint PPT Presentation

TRANSCRIPT

第第 22 章 章 8088/80868088/8086 微处理器微处理器

1

教学目的熟悉 8088/8086 微处理器的结构及其外部引脚和功能掌握 8088/8086 微机存储器的组织了解 8088/8086 微处理器的两种工作模式了解 8088/8086 微处理器的工作时序

第 2 章 8086/8088微处理器

2

3

CPU 是计算机系统的核心部件,控制和协调整个计算机系统的工作。基本功能:⊙ 进行算术运算和逻辑运算;⊙ 对指令进行译码、分析、执行指令所规定的操作;⊙ 与存储器和 I/O 接口进行数据交换;⊙ 少量数据的暂存;⊙ 提供系统所需的定时和控制信号;⊙ 响应输入输出设备发出的中断请求。

8088与 8086 同属于第三代 CPU,为 16位 CPU 、地址总线宽度 20 位,它们支持完全相同的指令系统。区别:

8086CPU 内部数据总线为 16 位,外部数据总线宽度为16 位,而 8088 的外部数据总线宽度为 8 位;

另外 8086 的指令预取队列长度为 6 字节,而 8088 的指令预取队列长度为 4 字节。

4

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

8088 以前的 CPU 采用串行工作方式,指令的执行过程一般为:

取指令 指令译码 取操作数 执行指令 存放结果

在 EU和 BIU 之间增设了指令预取队列之后:在多数情况下,取指令操作和执行指令操作并行进行。

8086/8088 包含两大功能部件,即• 执行单元( EU, Execution Unit )• 总线接口单元( BIU, Bus Interface

Unit )

2.1.1 8086/8088CPU的功能结构

7

AH ALBLCL

DLDHCH

BH

CX DX

BX

AX

SPBP

DI

CSDSSS

ESIP

通用寄存器组

暂存寄存器

ALU

FLAGS

EU控制部件

ALU 数据总线16 位

8 位

Q 总线指令队列

1 2 3 4

内部通信寄存器

地址加法器20 位

数据总线

16 位段寄存器

总线控制逻辑

SI

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

1. 执行单元 EU

功能:译码分析指令,执行指令,暂存中间运算结

果并保留结果特征。

从指令队列中取指令代码 译码

在 ALU 中完成数据的运算 运算结果的特征保存在标志寄存器 FLAGS 中。如果指令队列为空, EU 就等待;

2. 总线接口单元 BIU功能:负责与内存或输入 / 输出接口的信息传送;

EU 从指令预取队列中取走指令,指令队列出现空字节时, BIU 就自动执行一次取指令周期,从内存中取出后续的指令代码放入指令预取队列中;

从指定的内存单元或外设取 EU 需要的数据;

保存 EU 的运算结果;

当遇到跳转指令时, BIU 就使指令队列复位,从新地址取出指令,并立即传给 EU 去执行。

8088/8086 CPU 的工作方式为并行工作

指令预取队列的存在使 EU和 BIU 两个部分可同时进行工作,从而

减少了 CPU 为取指令而等待的时间;

降低了对存储器存取速度的要求

8088/8086 CPU 的这种结构被称为指令流水线结构。新型 CPU 将一条指令划分成更多的阶段,以便可以同时执行更多的指令,例如, PIII为 14 个阶段, P4为 20 个阶段 ( 超级流水线 )

2.1.2 8088CPU的存储器组织

11

物理地址● 8088/8086: 20 根地址线,可寻址 220(1MB) 个

存储单元。● CPU 送到 AB 上的 20 位的地址称为物理地址。

代码段

物理地址 ..

60000H 60001H 60002H 60003H 60004H

.

.

.

12HF0H

1BH08H

高地址

低地址段基址

段基址

段基址

段基址

最大 64KB ,最小 16B

段 i-1

段 i

段 i+1

物理地址..

60000H 60001H 60002H 60003H 60004H

.

.

.

12HF0H

1BH08H

问题:

8088 的内部总线和内部寄存器均为 16 位,如何生成 20 位地址?解决:存储器分段

13

物理地址是 CPU 操作时所使用的地址;逻辑地址是应用人员在编程时所使用的地址。由逻辑地址形成物理地址是由总线接口部件中的地址加法器实现的。

代码段寄存器: CS

数据段寄存器: DS

堆栈段寄存器: SS

附加段寄存器: ES

①8086/8088 系统中把可直接寻址的 1兆的内存空间分为段的逻辑区域。每段的物理长度为 64KB。

②每段的第一个内存单元的物理地址称为段起始地址,段起始地址必须能被 16 整除,形式如 XXXX0H, XXXXH 为段基址,即段起始地址的高 16 位。段基址存在段寄存器 CS 、

DS 、 SS 、 ES中。相对于该段起始地址的字节数称为偏移量;段基址和段内偏移量又称为逻辑地址。段起始地址可由软件指定

③每个段都由连续的存储单元构成,并且独立寻址。

存储器如何分段?

段基地址和段内偏移量组成了逻辑地址 段基址 偏移地址 ( 偏移量 )

表示为:段基址 : 段内偏移量 如: 2000:0370H

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

0AH3EH

60002H 00H12H

60000H

0 0 0 0

段基地址( 16 位)

段首地址

× × × • • • × × ×

已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H , DS 段有一操作数,其偏移地址 =0204H,

1)画出各段在内存中的分布 2) 指出各段末地址 3)该操作数的物理地址 = ?

10550H

250A0H

2EF00H

8FF00H

CS

SS

CS

DS

ES解: 各段分布及段首址见右图所示。 操作数的物理地址为: 250AH×10H+0204H = 252A4H

存储器为什么要分段 ?

1. 因为 8088/8086 的寄存器都是 16 位的,无法装载 20位的物理地址,所以它采用了将地址空间分段的方法;

2. 方便存储器的管理,采用分段甚至分页来管理,使得多个程序可以并行运行;

3. 分段寻址允许程序在存储器内重定位(浮动),可以把整个程序作为一个整体移到一个新的区域。允许实模式编写的程序在保护模式下运行。程序当中使用的地址都是逻辑地址。

4. 信息按特征分段存储。

含 14 个 16 位寄存器,按功能可分为三类:

8 个通用寄存器 4 个段寄存器 2个控制寄存器

2.1.3 8088CPU的寄存器结构

AH AL

BL

CL

DLDH

CH

BH

DX

CX

BX

AX

SP

BP

DI

SI目的变址寄存器

源变址寄存器

基址指针寄存器

堆栈指针寄存器

通用寄存器

AH AL

BL

CL

DLDH

CH

BH

DX

CX

BX

AX

SP

BP

SI

DI

IP

FLAGS

CS

DS

SS

ES

控制寄存器

指令指针

状态标志

代码段寄存器

数据段寄存器

堆栈段寄存器

附加段寄存器目的变址寄存器

源变址寄存器

基址指针寄存器

堆栈指针寄存器

通用寄存器

段寄存器

20

2.1.3 8088CPU的寄存器结构

AH AL AXBH BL BXCH CL CXDH DL DX

堆栈指针寄存器 SP基址指针寄存器 BP源变址寄存器 SI目的变址寄存器 DI

指令指针 IP状态标志 FLAGS

代码段寄存器 CS数据段寄存器 DS堆栈段寄存器 SS附加段寄存器 ES

按功能分

通用寄存器

专用寄存器

数据寄存器

指针寄存器

变址寄存器

段寄存器

控制寄存器

数据寄存器8088 含 4 个 16 位数据寄存器,它们又可分为 8 个 8 位寄存器,即:

AX AH, ALBX BH, BLCX CH, CLDX DH,DL

常用来存放参与运算的操作数或运算结果

数据寄存器特有的习惯用法AX :累加器。多用于存放中间运算结果。所有

I/O 指令必须都通过 AX 与接口传送信息;BX :基址寄存器。常用于存放访问内存时的偏移地 址;CX :计数寄存器。用于在循环或串操作指令中存

放循环次数或重复次数;DX :数据寄存器。在 32位乘除法运算时,存放

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

地址指针寄存器

SP:堆栈指针寄存器,其内容为栈顶的偏移地址;BP :基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。

BX 与 BP 在应用上的区别作为通用寄存器,二者均可用于存放数据;作为基址寄存器, BX通常用于数据段,一般与DS或 ES搭配使用; BP则通常用于堆栈段,与SS搭配使用。

变址寄存器

SI :源变址寄存器DI :目标变址寄存器变址寄存器常用于指令的间接寻址或变址寻址 .

段寄存器用于存放逻辑段的段基地址。 CS :代码段寄存器

DS :数据段寄存器 ES :附加段寄存器

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

数。

指令指针寄存器IP :指令指针寄存器,其内容为下一条

要执行的指令的偏移地址;

标志寄存器 FR( Flag Register)、 pswFLAGS :标志寄存器(程序状态字 PSW )状态标志:存放运算结果的特征控制标志:控制某些特殊操作

6 个状态标志位(CF, SF,AF, PF,OF, ZF)

3个控制标志位 (IF, TF,DF)

标志寄存器

0123456789101112131415

CFPFAFZFSFTFIFDFOF

进位标志位

奇/偶标志位

辅助进位标志位

零标志位

符号标志位

溢出标志位

方向标志位

中断允许标志位

跟踪标志位

• CF - 进位标志:算术运算时有进位 CF=1 ,无进位CF=0

• PF-奇偶标志:运算结果中“ 1” 的个数为偶数 PF=1• AF-辅助进位标志:第 3位向第 4 位有进位时 AF=1• ZF-零标志:运算结果为“ 0”则 ZF=1• SF-符号标志:运算结果为负数时 SF=1• OF-溢出标志:运算结果超出规定范围OF=1• IF- 中断允许标志: IF=1 中断允许• DF- 方向标志, DF=0 地址加 1• TF-跟踪标志, TF=1 ,为单步工作方式

•2.2 8088 CPU的引脚及其功能

8088CPU

123456789

1011121314151617181920

4039383736353433323130292827262524232221

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

GNDA14A13A12A11A10A9A8

AD7AD6AD5AD4AD3AD2AD1AD0NMI

INTRCLKGND

双列直插式封装40 个引脚

图 2-6 8088微处理器芯片引脚图

30

31

8088/8086特点 3:支持多处理器系统最小模式:• 系统控制总线的信号由芯片本身的引脚直接引出。仅需少量设备便可构成一个小型应用系统,也称为单处理机模式。不能 DMA

最大模式:• 系统总线由 8088 和总线控制器 8288共同构成。

这种模式下构成的微型机除 8088 CPU 以外,还可以接一个协处理器 8087。也称为多处理器模式。

8088/8086 可工作于两种模式

32

33

2.2 8088 CPU 的引脚及功能

引脚定义的方法可大致分为:• 每个引脚只传送一种信息( RD 等);• 引脚电平的高低代表不同的信号( IO/M 等);• CPU 工作于不同方式有不同的名称和定义( WR/LOCK

等);• 分时复用引脚( AD7 ~ AD0 等) ;为了减少芯片的引

脚, 8088 的许多引脚具有双重定义和功能,可以分时复用;即在不同时刻,这些引线上的信号是不同的。

• 引脚的输入和输出分别传送不同的信息。

34

40 条引脚, 双列直插式封装

=1 ,最小模式=0 ,最大模式

地址、段寄存器状态复用;S6=0 , S5=IF,S4S3=00, ES S4S3=01, SS S4S3=10, CS S4S3=11, DS

=1 ,访问输入输出端口;

=0 ,访问存储器数据允许信

号,数据总线上有有效

数据;

数据传送方向控制信号,=1, CPU 发送数据;=0, CPU 接收数据;

输入信号,由内存或 I/O设备发出。

VccA15

A16/S3

A17/S4

A18/S5

A19/S6

SS0 HIGH

MN/MXRD 无功能HOLD RQ/GT0

HLDA RQ/GT1

WR LOCKIO/M S2

DT/R S1

DEN S0

ALE QS0

INTA QS1

TESTREADYRESET

123456789

1011121314151617181920

4039383736353433323130292827262524232221

GNDA14

A13

A12

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

AD2

AD1

AD0

NMIINTRCLKGND

地址锁存允许信

号, ALE=1,

可屏蔽中断请求输入信号;

系统状态信号输出;

一个总线周期

地址输出

T1 T2 T3 T4

CLK

S6 S3,S7~A19/S6 A16/S3~

A15 A8~ 地址输出

AD7 AD0~ 地址输出

ALE

IO/M 低电平=读存储器,高电平=读I /O接口

RD

DT/R

DEN

数据输入

图 2-7 8088读周期的时序图35

36

IO/M DT/R SS0 操作0 0 0 发中断响应信号

0 0 1 读内存

0 1 0 写内存

0 1 1 暂停

1 0 0 取指令

1 0 1 读 I/O 端口

1 1 0 写 I/O 端口

1 1 1 无作用

SS0与 IO/M、 DT/R共同决定了最小模式下当前总线周期的状态。

37

复位后的内部寄存器状态

内部寄存器 内容   内部寄存器 内容

CS FFFFH 

IP 0000H

DS 0000H  FLAGS 0000H

SS 0000H   其余寄存器 0000H

ES 0000H   指令队列 空

38

主要引线(最小模式下)

8088 是工作在最小还是最大模式由 MN/MX端状态决定:MN/MX=0 时工作于最大模式,反之工作于最小模式。

数据信号线 (DB) 与地址信号线 (AB) :

• AD7~ AD0 :三态,地址 / 数据复用线。 ALE有效时输出地址的低

8 位。传送数据信号时为双向。

• A19~ A16 :三态,输出。高 4 位地址信号,与状态信号

S6-S3 分时复用。

• A15~ A8 :三态,输出。输出 8 位地址信号。

39

主要的控制和状态信号WR : 三态,输出。写命令信号;RD : 三态,输出。读命令信号;IO/M :三态,输出。指出当前访问的是存储器还是 I/O 接

口。高: I/O 接口,低:内存DEN :三态,输出。低电平时,表示DB 上的数据有效;RESET :输入,为高时, CPU 执行复位;ALE : 三态,输出。高: AB 地址有效;DT/ R :三态,输出。数据传送方向,高: CPU 输出,

低: CPU 输入

40

[ 例 ] :

当WR=1, RD=0, IO/M=0 时,表示 CPU 当前正在进行读存储器操作。

41

READY 信号 ( 输入 ) :用于协调 CPU 与存储器、 I/O 接口之间的速度差异, READY 信号由存储器或 I/O 接口发出。

READY=0 时, CPU 就在 T3 后插入 TW 周期,插入的 TW 个

数取决于 READY 何时变为高电平。 CPU 处于空闲状态。

42

中断请求和响应信号

INTR :输入,可屏蔽中断请求输入端。 高:有 INTR 中断请求

NMI :输入,非屏蔽中断请求输入端。 低高,有NMI 中断请求

INTA :输出,对 INTR 信号的响应。

43

总线保持信号HOLD:

总线保持请求信号输入端。当 CPU 以外的其他设备要求占用总线时,通过该引脚向 CPU 发出请求。HLDA:

输出,对 HOLD 信号的响应。为高电平时,表示CPU已放弃总线控制权,所有三态信号线均变为高阻状 态。

为使微处理器工作于最大模式,从而与外部协处理器一起工作,应将 MN/MX 引脚接地。S2, S1和 S0 :这些状态位显示当前总线周期的功能。它

们通常由 8288 总线控制器译码。

44

3. 最大模式引脚

S2 S1 S0 功能

0 0 0 中断响应

0 0 1 读 I/O

0 1 0 写 I/O

0 1 1 暂停

1 0 0 取操作码

1 0 1 读存储器

1 1 0 写存储器

1 1 1 无效状态

表 2-3 总线控制器( 8288 )使用 S2 , S1 和 S0 产生的总线控制功能

45

3. 最大模式引脚

46

IO/M DT/R SS0 操作1 0 0 发中断响应信号

1 0 1 读 I/O 端口

1 1 0 写 I/O 端口

1 1 1 暂停

0 0 0 取指令

0 0 1 读内存

0 1 0 写内存

0 1 1 无作用

SS0与 IO/M、 DT/R共同决定了最小模式下当前总线周期的状态。

RQ/GT1和 RQ/GT0 :请求 / 同意引脚,在最大模式下请求直接存储器存取( DMA )。这两个引脚都是双向的,既可用于请求 DMA 操作,又可用于同意DMA 操作。LOCK :锁定输出信号,用来锁定外围设备对系统总线的控制权。该引脚通过在指令前加前缀LOCK激活。QS1和 QS0 :队列状态位,表明内部指令队列的状态。这些引脚被算术协处理器( 8087 )访问,以监视微处理器内部指令队列的状态。参看表2-4 队列状态位的操作。

47

QS1 QS0 功能

0 0 队列空闲

0 1 操作码的第一个字节

1 0 队列空

1 1 操作码的后续字节

表 2-4 队列状态位

48

2.3 8088CPU 的工作时序及总线形成

2.3.1 8088 CPU 的工作时序

49

时序的概念: CPU各引脚信号在时间上的关系。

时钟周期:每个时钟脉冲的持续的时间,由时钟发生器产生。是计算机内部最小的时间单位,用 Ti表示。

总线周期: CPU 完成一次访问内存 ( 或接口 ) 操作所需要的时间。 8088CPU 一个总线周期至少包括 4 个时钟周期。

例如: 某 CPU 的主频 f= 5MHz ,则其时钟周期 T= 1/f =

200nS( 1ns=10-9S)。若主频为 100MHz ,时钟周期为 10nS。

一个总线周期

地址输出

T1 T2 T3 T4

CLK

S6 S3,S7~A19/S6 A16/S3~

A15 A8~ 地址输出

AD7 AD0~ 地址输出

ALE

IO/M 低电平=读存储器,高电平=读I /O接口

RD

DT/R

DEN

数据输入

图 2-7 8088读周期的时序图50

一个总线周期

地址输出

T1 T2 T3 T4

CLK

S6 S3,S7~A19/S6 A16/S3~

A15 A8~ 地址输出

AD7 AD0~ 地址输出

ALE

IO/M 低电平=读存储器,高电平=读I /O接口

WR

DT/R

DEN

数据输出

图 2-8 8088写周期的时序图 51

2.3.2 8088 CPU在两种模式下的系统总线形成

1. 最小模式下系统总线的形成

8284时钟发生器

+5V

+5V

8286

T

D0~

D7

AD7~AD0

A7~

A0

A15~

A8

A19~

A16

A15~A8

A19~A16

ALECLK

READY

RESET

8088CPU

8282

STB

8282

STB

8282

STB

DEN

DT/R

WR

RD

IO/MMN/MX

RES

OE

OE

OE

OE

图 2-9 8088最小模式总线形成52

2. 最大模式下系统总线的形成

8286

T

OE

8284时钟发生器

RES

8088CPU

MN/MX

存储器 I/O接口

+5V

CLK

DENDT/RALE

INTA

MEMR

MEMW

IOR

IOW

8288总线控制器

CLK

READY

RESET

S0S0

S1 S1

S2 S2

A19~A8

AD7~AD0

地址总线

数据总线

8282

STB

OE

图 2-10 8088最大模式总线形成53

54

作 业

P391 、 2 、 3 、 4 、 5 、 6 、 11 、 12