第2章 8086系统结构

107
2 2 8086 8086 第第 第第 2.1 8086 CPU 结结 2.2 8086 CPU 结结结结结结结 2.3 8086结结结结结 2.4 8086结 结结 2.5 8086 CPU 结结

description

第2章 8086系统结构. 2.1 8086 CPU 结构 2.2 8086 CPU 的引脚及其功能 2.3 8086存储器组织 2.4 8086系统配置 2.5 8086 CPU 时序. 2.1 8086 CPU 结构 2.1.1 微处理器( CPU) 的典型结构. 微处理器( Microprocessor) 也称中央处理器 CPU(Central Processor Unit), 主要由三部分组成: 运算器( ALU): 对数据进行算术运算、逻辑运算,运算结果  标志寄存器。 - PowerPoint PPT Presentation

Transcript of 第2章 8086系统结构

Page 1: 第2章 8086系统结构

第第 22 章 章 80868086 系统结构系统结构

2.1 8086CPU结构

2.2 8086CPU的引脚及其功能

2.3 8086存储器组织

2.4 8086系统配置

2.5 8086CPU时序

Page 2: 第2章 8086系统结构

2.1 8086 CPU 结构2.1.1 微处理器 (CPU) 的典型结构

微处理器( Microprocessor) 也称中央处理器CPU( Central Processor Unit) ,主要由三部分组成:

运算器( ALU):对数据进行算术运算、逻辑运算,运算结果 标志寄存器。

控制器:指令寄存器、指令译码器、定时及各种控制信号产生电路,用户程序中的指令一条条译出来,然后以一定时序发出相应的控制信号。

寄存器阵列:用来寄存参与运算的数据,或用来存放操作数地址。有通用和专用寄存器,如专用寄存器:程序计数器 PC , 堆栈指针 SP。

Page 3: 第2章 8086系统结构

微处理器 (cpu) 的典型结构

/数据总线缓冲器 锁存器

累加器8( 位)

暂存寄存8器( )

标志寄存器

多路转换开关指令寄存器

锁存器8( )

十进制调整

通用寄存器阵列

地址缓冲器

指令译码器

1 / 1加 器 减 器地址锁存器

PC 16程序计数器 ( )

寄存器选择 SP 16堆栈指示器 ( )

定时与控制 I /O 中断 存储器 . 请求 写 读 请求 请求 等待 时钟

ALU

内部数据总线

. . .

INT WR RD IORQ MREQ WAIT RESET A15~A0

DB7~DB0

算术逻辑单元

Page 4: 第2章 8086系统结构

* 在微处理器( CPU)内部,三部分之间的信息交换是采用总线结构来实现的,总线是各组件之间信息传输的公共通路,这里的总线称为内部总线,用户无法控制内部总线的工作。

* 微处理器( CPU)是计算机的核心部件,用来实现指令的自动装入和自动执行,实现计算机本身的自动化。

Page 5: 第2章 8086系统结构

工作过程

取指令 → 执行指令 → 取指令 → 执行指令 、、、

微机的工作过程* 指令是 CPU能执行的一个基本操作 ,CPU的设计者对 CPU的所有指令进行编码 ,用户用编码形式的指令进行编程,程序存放在内存中 ,CPU从内存取来编码形式的指令 ,对指令进行译码,发出执行该指令功能所需的信号。

* 当一条指令取走后,指令指针寄存器( IP) 会被自动修改成下一条要执行指令的地址,如此不断的重复。

Page 6: 第2章 8086系统结构

取指令阶段( CPU 读内存操作):

地址经地址寄存器 → 地址总线 → 地址译码器 , 选中指令所在的内存单元 CPU 发出内存读控制信号

指令从内存 → 数据总线 → 数据暂存器 → 指令寄存器 指令译码器对指令进行译码

由 IP 给出指令在内存的地址

标 志寄存器

地址总线 AB

程序

数据

数据总线 DB

控制总线 CB

、、、指令 1指令 2指令 3指令 4、、、、、、

数据 1数据 2数据 3、、、

指令寄存器

数据暂存器

控制电路

指令译码器

地址寄存器

指 令指 针

寄存器

R1R2R3R4

寄存器组

运算器

IP

Page 7: 第2章 8086系统结构

执行指令阶段:

经译码后的指令,由控制电路发出控制信号去执行。

CPU 总线 内存

标 志寄存器

地址总线 AB

程序

数据

数据总线 DB

控制总线 CB

、、、指令 1指令 2指令 3指令 4、、、、、、

数据 1数据 2数据 3、、、

指令寄存器

数据暂存器

控制电路

指令译码器

地址寄存器

指 令指 针

寄存器

R1R2R3R4

寄存器组

运算器

IP

Page 8: 第2章 8086系统结构

2.1.2 Intel 8086/8088 微处理器功能结构

一、 8086/8088CPU 的内部结构

8086CPU 按功能可分为两部分:

总线接口单元 BIU(bus interface unit) 执行单元 EU(execution unit)。

内部结构如下图所示:

Page 9: 第2章 8086系统结构

AH AL

BH BL

CH CL

DH DL

SP

BP

DI

SI

ͨÓüĴæÆ÷

运算寄存器

ALU

标志寄存器

EU控制系统

1 2 3 4 5 6

8λ

DS

SS

ES

IP

内部暂存器

CS

地址加法器

总线控制逻辑

外部的总线

80888086

指令队列缓冲器

8088:8位8086:16位

20位

16位

ALU数据总线

EU执行部件 BIU总线接口部件

数据总线

地址总线

AX

BX

CX

DX

Page 10: 第2章 8086系统结构

功能:负责与 M、 I/O 端口传送数据,完成内外信完成内外信息 交换息 交换。具体讲,即:即:

① 取指令 ②传送数据 ③形成物理地址

* 总线接口部件要从内存 取指令送到指令队列;

*CPU执行指令时,要配合执行部件从指定的内存单元 或者外设端口中取数据,将数据传送给执行部件;

* 或把执行部件的操作结果传送给指定的 M 或 I/O口。

1 、总线接口单元 BIU( Bus Interface Unit)

Page 11: 第2章 8086系统结构

组成: 4 个段地址寄存器( CS、 DS、 ES、 SS) 16 位指令指针寄存器 IP 20 位的地址加法器 (16d 段地址 + 偏移地址=物理地址 ) 6 字节( 8086 )或 4 字节( 8088 )的指令队列 , 总线控制电路 :

处理器与外界总线联系的转接电路。 包括三组总线:

20 位地址总线 16 位( 8086 )或 8 位( 8088 )双向数据总线

一组控制总线。

ES

SS

DSCS

ÄÚ²¿¼Ä´æÆ÷ ÊäÈë / Êä³ö¿ØÖÆ µç·

1 432

20λ

16λ

8086×ÜÏß

Ö¸Áî ¶ÓÁÐ

×ÜÏß ½Ó¿Úµ¥Ôª

65

16λ

IP

Page 12: 第2章 8086系统结构

两点说明: 指令队列

8086 的指令队列为 6 个字节 ,

8088 的指令队列为 4 个字节。

不论是 8086 还是 8088 都会在执行指令的同时从内存中取下一条或几条指令,取来的指令放在指令队列中,使 BIU 具有预取指令的功能,是一种先进先出( FIFO )的数据结构。

指令执行顺序

顺序指令执行:指令队列存放紧接在执行指令后面的那一条指令。

执行转移指令: BIU 清除指令队列中的内容,从新的地址取入指 令,立即送往执行单元,然后再从新单元开始重 新填满队列。

Page 13: 第2章 8086系统结构

2 、执行单元 EU ( Execution Unit)

功能:负责指令执行,即:即:

① 指令译码② 执行指令③ 向 BIU 传送偏移地址信息④ 管理通用寄存器和标志寄存器

Page 14: 第2章 8086系统结构

组成: 4 个通用寄存器:AX、 BX、 CX、 DX

4 个专用寄存器:BP、 SP、 SI、 DI 标志寄存器( FLAGS or PSW):

9 个标志位,其中 6 个条件标志位用于存放结果状态。

算术逻辑单元: 16 位加法器,用于对寄存器和指令

操作数进行算术或 逻辑运算。 EU 控制系统:

接受从总线接口单元的指令队列中取来的指令代码, 对其译码和向 EU 内各有关部

分发出时序命令信号, 协调执行指令规定的操作。

±êÖ¾¼Ä´æÆ÷

ALU

DI

DH

SP

SI

BP

DL

ALAH

BLBH

CLCH

EU¿ØÖÆϵͳ

执行单元 EU

Page 15: 第2章 8086系统结构

小结:

8086/8088 取指部分与执行部分是分开的。 即 BIU和 EU并行操作,取指和执行可以重迭,大大减少了等待取指所需的时间,提高了 CPU 的利用率。• 在一条指令的执行过程中可以取出下一条(或多条)指令,指令 在指令队列中排队;• 在一条指令执行完成后 , 就可以立即执行下一条指令,减少CPU 为取指令而等待的时间,提高 CPU 的利用率和整个运行速度。

重迭操作技术:一方面提高了整个执行速率,另一方面降低了与之相配的存储器的存取速度的要求。

取指 取指 取指 取指 得到数据

等待 执行 执行 执行 执行

Page 16: 第2章 8086系统结构

二、 8086CPU 的寄存器结构

8086 、 8088 内部有 14 个 16 位寄存器 ,按功能分为四类:

通用寄存器指针和变址寄存器

段寄存器控制寄存器

8086的寄存器结构分类如下(图):

Page 17: 第2章 8086系统结构

1、通用寄存器组通用寄存器包括: 4个 16位寄存器AX 、 BX 、 CX 、 DX 。

2、指针和变址寄存器 地址指针寄存器 : SP 、 BP 。变址寄存器包括 : SI 、 DI 。

3、段寄存器段寄存器包括 : CS 、 SS 、 DS 、 ES 。

4、控制寄存器 控制寄存器包括: IP 、 PSW( FLAGS)。

Page 18: 第2章 8086系统结构

AH AL

BH BL

CH CL

DH DL

SP

BP

SI

DI

IP

PSW

CS

DS

SS

ES

AX

BX

CX

DX

累加器

基址

计数

数据

数据寄存器

015

07815

015

015

附加数据段

堆栈段

数据段

代码段

段寄存器

指令指针

状态标志控制寄存器

堆栈指针

基址指针

源变址

目的变址

指针寄存器

变址寄存器

Page 19: 第2章 8086系统结构

数据寄存器AX、 BX、 CX、 DX 作为通用寄存器。

用来暂存计算过程中所用到的操作数,结果或其它信息。

访问形式 : 可以用 16 位的访问 ;

或者可以用字节( 8 位)形式访问。

它们的高 8 位记作 : AH 、 BH 、 CH 、DH 。

它们的低 8 位记作 : AL 、 BL 、 CL 、 DL 。

1 、通用寄存器组

Page 20: 第2章 8086系统结构

AX——( Accumulator )作为累加器。

它是算术运算的主要寄存器,

所有 I/O 指令都使用这一寄存器与外部设备交换数据。

例: IN AL , 20H

OUT 30H , AX

BX——( Base )用作基址寄存器使用。

在计算内存储器地址时,经常用来存放基址。

例: MOV AX, [BX+03H]

Page 21: 第2章 8086系统结构

CX——( Count )可以作计数寄存器使用。 在循环 LOOP 指令和串处理指令中用作隐含计数器。

例: MOV CX , 200H

AGAIN: ……

……

LOOP AGAIN ;( CX)-1(CX), 结果 0转AGAIN

DX——( Data )可以作为数据寄存器使用。 一般在双字长乘除法运算时, 把 DX和 AX 组合在一起存放一个双字长 (32 位 ) 数, DX 用来存放高 16 位 ; 对某些I/O 操作 DX 可用来存放 I/O 的端口地址(口地址 256 )。

例: MUL BX ; (AX)(BX)(DX)(AX)

例 : IN AL , DX

Page 22: 第2章 8086系统结构

段起始地址

SP、 BP、 SI、 DI 四个 16 位寄存器。

以字为单位在运算过程中存放操作数,经常用以在段内寻址时提供偏移地址。

段内偏移地址

段地址 :只取段起始地址高 16 位值。

偏移地址 : 指在段内某内存单元物理地址相对段起始地址的偏移值。

高 16 位值 0000B

2 、地址指针与变址寄存器

Page 23: 第2章 8086系统结构

地址指针寄存器 (SP 、 BP )—— 通常与 SS联用

SP( stack pointer ——) 堆栈指针寄存器

用来指示栈顶的偏移地址 , 必须与 SS 段寄存器联合使用确定实际地址。

堆栈和指针如下页图所示。

BP( base pointer ——) 基址指针寄存器

可以与 SS 寄存器联合使用来确定堆栈段中某一存储器单元地址。

Page 24: 第2章 8086系统结构

堆栈和指针

设 : ( SS)=3F00H,(SP)=0060H 堆栈和指针如下图:堆栈是内存开辟的一个特殊数据区,一端固定,一端浮动,严格按照后进先出的工作原则。

数据总线

地址总线

D7~D0

1 M X 8位存储体

A19~A0

00000H

FFFFFH

A19~10

.. . . . .

. . . . . .

a1

a0

栈底4EFFFH

3F060H(SP)=60H

3F000H(SS)=3F00H

Page 25: 第2章 8086系统结构

变址寄存器 (SI 、 DI) —— 通常与 DS 联用 SI——( Source Index ) 源变址寄存器。

DI——( Destination Index ) 目的变址寄存器。

使用场合:常用于变址寻址。

* 一般与 DS 联用,用来确定数据段中某一存储单元的地址, 某些指令中 SI , DI 具有自动增量和自动减量功能 .

例: MOV AX, [SI]

Page 26: 第2章 8086系统结构

寄存器 操作

AX 字乘/除指令中作为累加器,字 I/O指令中作为数据寄存器

AL 字节乘/除指令,字节 I/O,转移,十进制运算

AH 字节乘/除指令(高八位/余数),XLAT 指令中作为目的寄存器

BX 作为地址/基址寄存器

CX 串操作时,循环计数器

CL 变量位移或循环操作时用作计数器

DX 字乘/除指令(高十六位/余数),I/O间接寻址

SP 堆栈指针

BP 在间址寻址中作基址指针

SI 地址和变址寄存器,串操作时的

源变址寄存器(隐含)

DI 地址和变址寄存器,串操作时的 目的变址寄存器(隐含)

表 2-1 各寄存器特殊用法

参看:教材 P26 表 2-1

Page 27: 第2章 8086系统结构

段寄存器 : 4个 16位

8086/8088 按信息存储的不同性质分为四类,分别由四个段寄存器存放该段的首地址,或称为段地址。用来识别当前可寻址的四个段,不可互换的使用。

CS——Code Segment Register 代码段寄存器, 用来识别当前代码段(程序一般放在代码段)。

DS——Data Segment Register数据段寄存器, 用来识别当前数据段寄存器。

SS——Stack Segment Register堆栈段寄存器,用来识别当前堆栈段。

ES——Extra Segment Register附加段寄存器,用来识别当前附加段。

3 、段寄存器

Page 28: 第2章 8086系统结构

控制寄存器: IP 、 PSW(FLAGS) ,两个 16 位寄存器IP—( Instruction Pointer )指令指针寄存器

用来存储代码段中的偏移地址 ; 程序运行过程中 IP 始终指向下一次要取出的指令偏移地址。 IP 要与CS 寄存器相配合才能形成真正的物理地址。PSW—( Processor States Word )程序状态字(标志)寄存器

由状态标志、控制标志构成。只用了其中 9 位 , 6位状态标志 , 3 位控制标志。如下表示。

OF DF IF TF SF ZF AF PF CF

015 245678910

4 、控制寄存器

Page 29: 第2章 8086系统结构

状态标志 :

用来记录程序中运行结果的状态信息作为后续条件转移指令的转移控制条件。状态标志包括 6 位: CF 、 PF 、 AF 、 ZF 、 SF 、OF 。

① OF( Overflow Flag )溢出标志(一般指补码溢出)

OF=1 :在带符号数运算过程中,结果超过了机器表示的范围。

OF=0 :在带符号数运算过程中,结果未超过机器能表示的范围。

字节运算范围 -128—+127 ,

字运算范围 -32768—+32767 。

Page 30: 第2章 8086系统结构

② SF( Sign Flag )符号标志 ,状态与运算结果最高位相同

SF=1 :记录运算结果的符号为负。

SF=0 :记录运算结果的符号为正。

③ ZF( Zero Flag )零标志

ZF=1 :运算结果为 0 。

ZF=0 :运算结果不为 0 。

④ CF( Carry Flag )进位标志

CF=1 :运算时最高有效位产生有进(借)位。

CF=0 :运算时最高有效位没有产生进(借)位。

Page 31: 第2章 8086系统结构

⑤ AF( Auxiliary Carry Flag )辅助进位标志

AF=1 :记录运算时第 3 位(半个字节)产生进位值。

AF=0 :记录运算时第 3 位(半个字节)不产生进位值。

⑥ PF(Parity Flag)奇偶标志

PF=1: 执行结果低 8 位中有偶数个 1 。

PF=0: 执行结果低 8 位中有奇数个 1 。

用来为机器中传送信息时提供检验条件。

Page 32: 第2章 8086系统结构

控制标志 :

对控制标志位进行设置后 , 对其后的操作起控制作用。

控制标志位包括 3 位 : TF 、 IF 、 DF 。

跟踪(陷阱)标志 TF 、中断标志 IF 、方向标志 DF 。

① TF(Trap Flag)跟踪 (陷阱 ) 标志位

TF=1 ,每执行一条指令后,自动产生一次内部中断,使 CPU处于单步执行指令工作方式,便于进行程序调试,用户能检查程序。

TF=0, CPU正常工作,不产生陷阱。

Page 33: 第2章 8086系统结构

② IF(Interrupt Flag) 中断标志位

IF=1, 允许外部可屏蔽中断。 CPU 可以响应可屏蔽中断请求。

IF=0, 关闭中断。 CPU禁止响应可屏蔽中断请求。

IF 的状态对不可屏蔽中断和内部软中断没有影响。

③DF(Direction Flag)方向标志位

DF=1,每次串处理操作后使变址寄存器 SI和 DI 减量,使串处理从 高地址向低地址方向处理。

DF=0,每次串处理操作后使变址寄存器 SI和 DI增量 , 使串处

理从 低地址向高地址方向处理。

DF方向标志位是在串处理指令中控制处理信息的方向用的。

Page 34: 第2章 8086系统结构

•控制信息 : 由系统程序或用户程序根据需要用指令来设置的。

• 状态信息 :由 CPU根据计算结果自动设置的。

但机器提供了设置状态信息指令 ,必要时 , 程序员可以用这些指令来建立状态信息。

Page 35: 第2章 8086系统结构

在调试程序时, DEBUG 提供了测试标志位的手段,用符号表示标志位的值,每种标志位的符号如下表:

标志名 1标志为 0标志为

OF ( /溢出 是 否) OV NV

DF / )方向(减量 加量 DN UP

IF ( / )中断 允许 关闭 EI DI

SF ( / )符号 负 正 NG PL

ZF ( /零 是 否) ZR NZ

AF ( /辅助进位 是 否) AC NA

PF ( / )奇偶标志 偶 奇 PE PO

CF ( /进位标志 是 否) CY NC

DEBUG 不提供 TF 的符号用于单步方式操作。

Page 36: 第2章 8086系统结构

1 0 0 0 1 1 0 1 0 0 0 1 0 100

0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1+

0111101010101010

标志 :

运算结果最高位为 0 ∴ SF=0 ;

运算结果本身≠ 0 ∴ ZF=0

低 8 位中 1 的个数为奇数个 ∴ PF=0 ;

最高位没有进位 ∴ CF=0

第三位向第四位无进位 ∴ AF=0;

次高位向最高位没有进位 ,最高位向前没有进位 , ∴OF=0。

例 1 :执行两个数的加法,分析对标志位的影响。

Page 37: 第2章 8086系统结构

标志 :运算结果最高位为 1 , SF=1 ;运算结果本身不为 0 , ZF=0 ;最高位向前无进位, CF=0 次高位向最高位产生进位 , 而最高位向前没有进位, OF=1 ;结果低 8 位含偶数个 1 , PF=1 ;第三位向第四位有进位 , AF=1 。* 在绝大多数情况下,一次运算后并不改变所有标志,程序也并不需要对所有的标志作全面的关注。一般只是在某些操作后 ,对其中某个标志进行检测。

例 2 :执行两个数的加法,分析对标志位的影响。0 1 0 1 0 0 0 0 1 1 1 0 0 110

0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0+

1100010110011001

AF=1OF=1

Page 38: 第2章 8086系统结构

( 1 ) AX , BX ,CX ,DX 是数据寄存器 可以作为 16 位寄存器使用,又可以作为 8 位寄存器使用。 但每个寄存器在使用时各有特殊之处。问题: AX,BX,CX,DX 能用来存放偏移地址吗?哪些可以?哪些不可以?

( 2 ) 16 位的寄存器问题: BX,BP,SP,SI,DI,IP 存放的偏移地址在构成物理地址时, 与段地址是如何配合使用?

问题思考:

Page 39: 第2章 8086系统结构

8086微处理器是 Intel公司的第三代微处理器,它的字长是16位的,采用 40条引脚的 DIP( 双列直插 )封装。时钟频率有三种: 5 MHz(8086)、 8 MHz(8086- 1)和 10 MHz (8086- 2)。 8086的引脚如图 2.3所示。

8086的 40条引脚信号按功能可分为四部分——地址总线、数据总线、控制总线以及其他 (时钟与电源 )。 8086微处理器的引脚信号定义见表 2-2。

2.2 8086CPU 的引脚及其功能——微处理器级总线

Page 40: 第2章 8086系统结构

图2.3 8086

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

GND

AD14

AD13

AD12

AD11

AD10

AD9

AD8

AD7

AD6

AD5

AD4

AD3

AD2

AD1

AD0

NMI

INTR

CLK

GND

8086CPU

VCC

AD15

A16 / S3

A17 / S4

A18 / S5

A19 / S6

RESET

40

39

38

37

36

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

7S / BHE

MX / MN

RD

)GT / RQHOLD( 0

)GT / RQHLDA( 1

)LOCK(WR

)S(IOM/ 2

)S(RDT/ 1

)S(DEN 0

)ALE(QS0

READY

)(QSINTA 1

TEST

Page 41: 第2章 8086系统结构

表 2-2 8086 引脚信号定义

BHE

MX

名 称 功 能 引 脚 号 类 型公 用 信 号

AD15~ AD0 地址 / 数据总线 2 ~ 16 , 39 双向、三态A19/S6~ A16/S3 地址 / 状态总线 35 ~ 38 输出、三态

/S7 总线高允许 / 状态 34 输出、三态MN/ 最小 / 最大方式控制 33 输入

读控制 32 输出、三态等待测试控制 23 输入

READY 等待状态控制 22 输入RESET 系统复位 21 输入

NMI 不可屏蔽中断请求 17 输入INTR 可屏蔽中断请求 18 输入CLK 系统时钟 19 输入VCC +5 V 电源 40 输入

GND 接地 1 , 20  

RDTEST

Page 42: 第2章 8086系统结构

表 2-2 8086 引脚信号定义(续 1 )

最小方式信号 (MN/MX=VCC)

HOLD 保持请求 31 输入

HLDA 保持响应 30 输出

写控制 29 输出、三态

M/IO 存储器 /IO 控制 28 输出、三态

DT/R 数据发送 / 接收 27 输出、三态

数据允许 26 输出、三态

ALE 地址锁存允许 25 输出

中断响应 24 输出

WR

DEN

INTA

Page 43: 第2章 8086系统结构

表 2-2 8086 引脚信号定义(续 2 )

最大方式信号 (MN/MX= GND)

请求 / 允许总线访问控制 30 , 31 双向

总线优先权锁定控制 29输出、三

总线周期状态 26 ~ 28输出、三

态QSl、 QS

0

指令队列状态 24 , 25 输出

0,1/GTRQ

LOCK

012 SSS 、、

Page 44: 第2章 8086系统结构

数据总线用来在 CPU 与内存储器 (或 I/O 设备 ) 之间交换信息,为双向、三态信号。

地址总线由 CPU 发出,用来确定 CPU 要访问的内存单元(或 I/O 端口 ) 的地址信号,为输出、三态信号。

AD15~ AD0为地址 /数据总线。这 16条信号线是分时复用的双重总线,在每个总线周期 (T1)开始时,用作地址总线的16位 (AD15~ AD0)给出内存单元 (或 I/O端口 )的地址;其他时间为数据总线,用于数据传输。

1. 地址总线和数据总线

Page 45: 第2章 8086系统结构

A19~ A16/S6~ S3为地址 /状态总线。这 4条信号线也是分时复用的双重总线,在每个总线周期 (T1)开始时,用作地址总线的高 4位 (A19~ A16),在存储器操作中为高 4位地址,在 I/O操作中,这 4位置“ 0”(低电平 )。在总线周期的其余时间,这 4条信号线指示 CPU的状态信息。

8086的 20条地址线访问存储器时可寻址 1 MB的内存单元;访问外部设备时,只用 16条地址 A15~ A0,可寻址 64K个 I/O端口。

BHE/S7为总线高允许 /状态 S7信号 (输出三态 )。这也是分时复用的双重总线,在总线周期开始的 T1周期,作为16位总线高字节部分允许信号,低电平有效。当为低电平时,把读 / 写的 8位数据与 AD15~ AD8连通。该信号与 A0(地址信号最低位 )结合以决定数据字是高字节工作还是低字节工作。

Page 46: 第2章 8086系统结构

控制总线用来传送控制信号,有 CPU 输出控制命令的,如读、写命令,中断响应等;有外部向 CPU 输入控制及请求信号的,如复位、中断请求等。

介绍部分控制信号

• MN/MX(33#引脚 ) :最小 / 最大方式控制。

接 +5 V , 8086处于最小方式,由 8086提供系统所需的全部控制信号,构成一个小型的单处理机系统。

接地时, 8086处于最大方式,系统的总线控制信号由专用的总线控制器 8288提供,最大方式用于多处理机和协处理机结构中。

2. 控制总线

Page 47: 第2章 8086系统结构

• ALE:地址锁存允许信号 (输出 ), CPU在总线周期的第一个时钟周期内发出正脉冲信号,其下降沿用来把地址 /数据总线 (AD15~ AD0)以及地址 /状态总线 (A19~ A16/S6~S3)中的地址信息锁住并存入地址锁存器中。 • M/IO:是存储器与输入 /输出端口的控制信号 (输出、三态 ),用于区分 CPU是访问存储器 (M/IO=1),还是访问I/O端口 (M/IO=0)。• DT/R:为数据发送 /接收信号 (输出、三态 ),用于指示CPU是进行写操作 (DT/R=1)还是读操作 (DT/R=0),即方向控制。• DEN:为数据允许信号 (输出、三态 ),低电平有效,在CPU访问存储器或 I/O端口的总线周期的后一段时间内,该信号有效,用作系统中总线收发器的允许控制信号。

以下按最小方式信号介绍

Page 48: 第2章 8086系统结构

• RD:读控制信号 (三态、输出 )。低电平时,表示 8086 CPU执行读操作。在 DMA方式时 RD处于高阻态。

• WR:写控制信号 (三态、输出 )WR信号为低电平时,表示 8086 CPU执行写操作。

• RESET:复位信号 (输入 )。高电平时,系统处于复位状态, CPU停止正在运行的操作,把内部的标志寄存器 FR、段寄存器、指令指针 IP复位到初始化状态 (一般为 0),清空指令队列。

注意: CS的初始化状态为 FFFFH。

Page 49: 第2章 8086系统结构

(1) CLK——时钟信号 (输入 )。该信号为 8086 CPU提供基本的定时脉冲。

(2) VCC——电源 (输入 )。要求接上正电压(+5V±10% )。

(3) GND——地线。两条接地线。

3. 其他信号

Page 50: 第2章 8086系统结构

8088微处理器是一种准 16位处理器,其内部结构基本上与8086相同,且有着相同的内部寄存器和指令系统,在软件上是完全兼容的。其引脚信号也与 8086基本相同,只是有些引脚的功能有所不同。8086 CPU的指令预取队列为 6个字节,而 8088 CPU只有 4个字节。

8086 CPU的 AD15~ AD0为地址 /数据双向分时复用的,而8088 CPU只有 AD7~ AD0,为地址、数据双向分时复用的。 8088的速度较 8086要慢些。

还有一些不同之处参看教材。

4. 8088 引脚与 8086 引脚的不同之处

Page 51: 第2章 8086系统结构

2.3 8086 存储器组织一、存储器地址的分段

8086有 20条地址总线,直接寻址能力为 220=1M 字节矛盾:存储器地址空间1MB, 20bit地址线;内部各寄存器和数据总线均为 16bit 。

¶Î 1

¶Î 2

¶Î 16

¶Î 3

00000H

0FFFFH10000H

1FFFFH20000H

2FFFFH

F0000H

FFFFFH

1. 存储器地址的分段

解决方法:将整个存储器分为若干个逻辑段,每段内地址16bit,即最多地址空间64KB。允许各逻辑段在整个存储空间浮动,段与段之间可以是连续的,也可以是分开的或重叠的。

Page 52: 第2章 8086系统结构

存储器地址分段 IBM PC 机对段的起始地址有限制,即段不能从任意地址开始:约定段的起始地址低 4 位必须是 0 (或能被 16整除)。

段内地址 16 位 ,每个段 64KB; 可根据需要确定段大小 , 可以是在 64K范围内的任意字节数。 两个定义:

段地址(段基址):一个段的起始地址的高 16 位。 1MB空间可有 216 个段地址。 段内偏移地址(有效地址 EA) :相对于段起始地址的偏移量,16 位。所以每个段的大小最大可达 64KB。

结论:存储器段与段之间可互相覆盖。

Page 53: 第2章 8086系统结构

根据定义 1MB空间可有 216 个段地址,相邻两段地址相距 16 个存储单元。

在 16 进制表示的地址中,最低位为 0H (即 20位地址的低 4 位为 0000B)。段首地址为:

段地址 0000 0H

0001 0H

4123 0H

4124 0H

FFFE 0H

FFFF 0H

Page 54: 第2章 8086系统结构

00000H

逻辑段2<=64KB

逻辑段 1 起点逻辑段 2 起点

逻辑段 3 起点

逻辑段 4 起点

FFFFFH

逻辑段1<=64KB

逻辑段4<=64KB

逻辑段3<=64KB

程序执行前,分别对相应的段寄存器CS, DS, SS,ES 置“段基值”。

若程序长度大于 64KB ,则可通过对 CS 送新的“段基值”将程序转移到新段中。

Page 55: 第2章 8086系统结构

2. 20 位物理地址的形成

物理地址:信息在存储器中实际存放的地址 (20 位 ) ;范围从00000H~ FFFFFH ,当 CPU访问存储器时由地址总线发出的地址。 每个存储单元只有唯一的物理地址。但可由不同的段地址和不同的偏移地址组成。

例: 20000H

逻辑地址:在程序中使用的地址。对给定的任一存储单元,有两部分逻辑地址(均为 16 位的无符号二进制数):段基址(段地址)——由 CS, DS, SS, ES决定。段内偏移量(段内有效地址)——该单元相对于段基址的距离。 例: 8000 : 0100H

定义:

Page 56: 第2章 8086系统结构

物理地址计算方法: 把段地址左移 4 位再加上偏移地址值形成物理地址。

物理地址 = 16d 段地址 + 偏移地址。

16位段地址 0000

16位偏移地址

015

015

20位物理地址

019

+

Page 57: 第2章 8086系统结构

段基址 0 0 0 0

3 2 1 015 0

偏移地址

基址加法器

物理地址

015

019

物理地址的形成

......

20000H

25F60H

25F61H

25F62H

25F63H

2000H

段基址

逻辑地址

段内偏移地址5F62H

逻辑地址与物理地址

Page 58: 第2章 8086系统结构

逻辑地址来源操作类型 正常使用(隐

含)段基址可替换段地址

偏移地址

物理地址计算

取指令 CS 无 IP (CS)16d+(IP)

堆栈操作 SS 无 SP (SS) 16d+(SP)

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

(SS) 16d+EA

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

(DS )16d+EA

源字符串 DS CS,ES,SS SI (DS) 16d+(SI)

目标字符串 ES 无 DI (ES) 16d+(DI)

例:已知 CS=2000H,IP=003AH,求物理地址?

组合20000H+003AH 2003AH

Page 59: 第2章 8086系统结构

代码段

数据段

堆栈段

CS

IP

DS

SI ,DI BX或

SS

SP BP或

段寄存器和其他寄存器组合指向存储单元示意图

归纳段寄存器和其他寄存器组合指向存储单元示意图如下:

Page 60: 第2章 8086系统结构

注意:( 1 ).由操作系统负责各段在存储器中的分配

一般情况,各段在存储器中的分配是由操作系统负责。

每个段可以独立地占用 64K 存储区。也可以允许重迭, 但使用时防止冲突。

( 2 ).在程序的首部设定各段寄存器的值

程序员要在程序的首部设定各段寄存器的值。

Page 61: 第2章 8086系统结构

( 3 ). 以 8086为 CPU的 IBMPC 系统中,存储器首尾地址的用途固定,用户不能占用。

• 00000H~003FFH 共 1K 内存单元用于存放中断向量。

• FFFF0H~FFFFFH 是存储器底部的 16 个单元。

系统加电复位时,会自动转到 FFFF0H 单元执行, 在 FFFF0H 处存放一条无条件转移指令,转向系统初始化程序。

Page 62: 第2章 8086系统结构

64K程序

64K数据

64K堆栈

00000H

01000H

21000H

46000H

64K附加数据A0000H

0100H

2100H

4600H

A000H

段寄存器

CS

DS

SS

ES

4K程序

2K数据

100H堆栈

00000H

01000H

02000H

A0000H

0100H

0200H

0280H

段寄存器

CS

DS

SS02800H

64KB 为一段代码段范围 :01000H~10FFFH

各段允许重迭:代码段: 01000H~01FFFH数据段: 02000H~027FFH堆栈段: 02800H~028FFH

例:

Page 63: 第2章 8086系统结构

1. 问题的提出:

8位机( MCS-51、 8088)的存储器地址空间和数据存储格式以字节 (8bit)为单位组织存储器地址空间,访问一次存储器,获得一个字节的数据。 而 8086CPU的数据总线为 16位, CPU除了可以对一个字节寻址外,还必须能进行一个字的读写。即:如何组织数据存储格式使 CPU访问一次存储器,获得一个字的数据?

8086CPU能寻址 1MB的存储单元 每个存储单元存放一字节信息并用唯一的一个地址码标识

二、 8086 存储器的分体结构

Page 64: 第2章 8086系统结构

计算机对内存的读 /写操作 CPU 发出地址信号,选中相应的内存单元。 若是读操作, CPU 发出内存读控制信号,

被选中的内存单元将其内容经数据总线送入 CPU。

若是写操作, CPU 发出内存写控制信号, CPU 将欲写的内容经数据总线,写入被选中的内存单元。

n根C

P

U

地址线 AB

控制线 CB

地址译码器

11001100001100111010101011110000

10001000

地址 00...0000地址 00...0001地址 00...0010地址 00...0011

地址 11…1111

数据线 DB

Page 65: 第2章 8086系统结构

内存单元的地址和内容

8086 存储单元地址:按照字节编址

. . . . . .

1100 1111B

. . . . . .

物理地址 内容

00000H

00001H

00002H

00006H

FFFFFH

Page 66: 第2章 8086系统结构

字( 16 位)数据的存放:一个字存入存储器占有相继的二个单元:

低位字节存入低地址,高位字节存入高地址。

字单元的地址采用它的低地址来表示。

例: 字单元 :( 0004H) =1234H,

字节单元 :( 0004H) =34H

* 同一个地址既可以看作字节单元地址,

又可看作字单元地址,需要根据使用情况确定。

字单元地址:可以是偶数也可以是奇数。

34H

12H

1EH

2FH

0000H

0001H

0002H

0003H

0004H

0005H

0006H

.. .

1234H

1235H

1236H

.. .

Page 67: 第2章 8086系统结构

8086 数据总线是 16 位的。

讨论 CPU 和存储器之间传送数据方式:

字数据读 / 写操作

字节数据读 / 写操作

2. 8086 CPU 和存储器 ( 或 I/O 端口 ) 之间传送数据

Page 68: 第2章 8086系统结构

字数据读 /写操作(a) 操作数存放在偶地址开始两个存储单元或两个 I/O 端口中,如下页图示:

即字的低 8 位——在偶地址单元或 在偶地址端口; 高 8 位——在奇地址单元或在奇地址端口。

* 此时可在一个总线周期内完成 16 位数据传送。

字数据存放在偶地址开始的两个存储单元中,符合这种规则存放的字数据称为“规则字”。

Page 69: 第2章 8086系统结构

CPU8低 位数据

8高 位数据8高 位数据线

低地址

高地址

奇地址偶地址

内存/读 写偶地址字

8低 位数据线

对应的偶地址单元 /偶地址端口—数据通过数据总线低 8 位传输。

对应的奇地址单元 /奇地址端口—数据通过数据总线高 8 位传输。

Page 70: 第2章 8086系统结构

(b)操作数存放在奇地址开始两个存储单元或两个 I/O端口中,如下图所示:

读 / 写奇地址字

数据

数据CPU

空闲

奇地址

偶地址

高地址

低地址

内存第一个总线周期

数据

数据CPU

奇地址

偶地址

高地址

低地址

内存

第二个总线周期

空闲

Page 71: 第2章 8086系统结构

在第一个总线周期中 :

奇地址单元(操作字低 8 位)通过数据总线高 8 位进行传输,而数据总线低 8 位处于空闲状态;

在第二个总线周期中 :

偶地址单元或偶地址端口字节(操作字高 8 位)通过数据总线低 8 位进行传输,而数据总线高 8 位处于空闲状态 .

* 操作数存放在奇地址开始两个存储单元 / 两个 I/O 端口中进行数据传输, 8086 需要二个总线周期。通常:

字的地址为偶地址(“对准好”的字)。

字的地址为奇地址(“未对准好”的字),

Page 72: 第2章 8086系统结构

字节读 /写操作: 对偶地址单元 /偶地址端口的字节数据进行读 /写如下图所示:在一个总线周期中,只有数据总线的低 8 位传输数据,高8 位处于空闲状态。

数据CPU 偶地址

高地址

低地址

内存

空闲 奇地址

/读 写偶地址字节

Page 73: 第2章 8086系统结构

对奇地址单元 /奇地址端口的字节数据进行读 /写如下图所示:

在一个总线周期中,只有数据总线的高 8 位传输数据, 而低 8 位处于空闲状态。

数据CPU

空闲

奇地址

高地址

低地址

内存

偶地址

/读 写奇地址字节

Page 74: 第2章 8086系统结构

( 1)将 1M 的存储空间分成两个存储体:偶地址和奇地址存储体。

0000000001

00002

00004

FFFFEFFFFF

00003

00005

512K*8bit

A0 =0

512K*8bit

A0=1

D0D7D8D15

( 2)将数据总线的低 8位与偶地址存储体数据线相连,数据总线的高 8位与奇地址存储体数据线相连。( 3)用地址线 A0和 BHE信号选择存储体。

3. 8086 系统的存储器结构

Page 75: 第2章 8086系统结构

8086

地址锁存

器奇

存储体

偶存储

A1—A19

A0

BHE

A0—A19

BHE

D0—D7

D8—D15

BHE A0 操作 总线使用情况 0 0 从偶地址开始读 / 写一个字 AD15--AD0

0 1 从奇地址开始读 / 写一个字节 AD15--AD8

1 0 从偶地址开始读 / 写一个字节 AD7--AD0

1 1 无效 0 1 从奇地址开始读写一个字 (非规则字 ) AD15--AD8

1 0 AD7--AD0

Page 76: 第2章 8086系统结构

8086的 I/O 端口

8086 系统和外部设备之间都是由 I/O 接口电路来联系的 , I/O 接口内部通常有一个或多个 I/O 端口。系统给每个端口分配一个地址,称为端口地址。

I/O 接口内部通常有一个或多个寄存器,用以存放各种信息,称 I/O 寄存器或 I/O 端口。根据存放内容的不同可分为:状态端口,数据端口,控制端口 。

Page 77: 第2章 8086系统结构

CPU对 I/O 端口的读 /写操作: (与内存的读 /写操作相类似) CPU 发出地址信号,选中相应的 I/O 端口。 若是读操作, CPU 发出 I/O 端口读控制信号,

被选中的 I/O 端口将其内容经数据总线送入CPU。

若是写操作, CPU 发出 I/O 端口写控制信号, CPU 将欲写的内容经数据总线,写入被选中的 I/O 端口中。

I/O 端口 1 (23H 端口 )

I/O 端口 2(24H 端口 )

I/O 端口 3(25H 端口

地址译码

数据缓冲

控制电路

AB

DB

CB

C

P

U

Page 78: 第2章 8086系统结构

• 8086CPU利用地址总线的低 16位作为对 8位I/O端口的寻址线,最多可访问 65536( 64KB)个端口。

• 当 8位 I/O设备连在数据总线低 8位上时,则所有端口地址都将是偶数地址( A0=0);若连在数据总线高 8位上,那么所有端口地址都将是奇数地址( A0=1)。

• IBM-PC系统只使用了 A9~ A010条地址线作为I/O端口的寻址线,故最多可寻址 1024( 1KB)个端口。

Page 79: 第2章 8086系统结构

说明: 8088 数据总线只有 8 位, CPU和存储器或I/O端口之间传送数据:每个总线周期只传输1 个字节。

Page 80: 第2章 8086系统结构

堆栈是利用 RAM区中某一指定区域 (由用户规定 ),用来暂存数据或地址的存储区。 堆栈段是由段定义语句在内存中定义的一个段,段基址由 SS指定。 堆栈存取数据的原则是“先进后出”,存取数据的方法是压入 (PUSH)和弹出 (POP)。

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

每执行一条 PUSH指令, SP= (SP)- 2,向堆栈压入 16bit数据。 每执行一条 POP指令,从堆栈弹出 16bit数据, SP= (SP)+ 2。

三、堆栈的概念

Page 81: 第2章 8086系统结构

00FAH

00FBH

00FCH

00FDH

00FEH

00FFH

0100H

36H

95H

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

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

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

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

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

75H

04H

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

1 、设栈底(SP)=0100H

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

75H

04H

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

36H

95H

Page 82: 第2章 8086系统结构

特点:系统规模小,只含有一个 8086CPU ,不含数字运算协处理器、 输入 / 输出协处理器 ; 存储器芯片, I/O芯片不多;构成一小型、单处理机系统。 地址总线由 AD0~AD15, A16/ S3 ~A19/ S6 通过 8282 锁存器构成; 数据总线直接由 AD0~AD15 构成(也可加总线驱动 8286 ); 控制总线由 CPU 的控制线提供,系统中的总线控制逻辑电路被减少到最小。

一、 最小模式系统( MN/ MX 引脚接 +5V 电源)

8086 系统可以有最小模式和最大模式两种系统配置方式。

2.4 8086 的系统配置

Page 83: 第2章 8086系统结构

参见最小方式下 8086系统配置图

图中:8086 CPU、存储器和 I/O接口电路。

时钟发生器、地址锁存器和数据收发器(三部分支持系统工作的器件)。

Page 84: 第2章 8086系统结构

最小方式下 8086 系统配置图

Page 85: 第2章 8086系统结构

8284A是用于 8086(或 8088)系统的时钟发生器 /驱动器芯片,它为 8086(或 8088)以及其他外设芯片提供所需要的时钟信号。 8284A 的结构框图及引脚图如下页图所示。

1) 时钟发生器 8284A

可产生时钟信号 CLK、 PCLK

晶体振荡器 (OSC)频率——14.318 MHz时钟脉冲 (OSC) 3分频—— 4.77 MHz CPU所需时钟脉冲CLK

CLK经 2分频—— 2.3805 MHz 外设时钟 PCLK 可由 CLK(8086的时钟信号 )同步产生RESET、 READY信号 (高电平有效 )

Page 86: 第2章 8086系统结构

8284A 的结构框图与引脚

振荡器

&

&

1

¡Ý1 ¡Â3SYNC

x1

x2

CF/

EFI

CSYNC

RDY1

11AEN

&

RDY2 &

12AEN

¡Ý1

CK¡üD Q

FF1¡Ý1

ASYNC

& CK¡ýD Q

FF2

1 1

¡Â2SYNC

1

RES

CK¡ý

DQ

RESET

OSC

PCLK

CLK

READY

CSYNC 1

PCLK 2

31AEN

RDY1 4

READY 5

RDY2 6

72AEN

CLK 8

GND 9

18

17

16

15

14

13

12

11

10

VCC

x1

x2

ASYNC

EFI

F/C

OSC

RES

RESET

8284A

Page 87: 第2章 8086系统结构

系统中配有:

三片锁存器芯片(用于实现地址数据信息的分离)

锁存 AD15~ AD0、 A19/S6~ A16/S3 中的地址信息、 BHE/S7 中的 BHE信息。这 21位信息仅在总线周期的第一个时钟周期 T1出现。常用锁存器芯片有:74LS373、 741LS273、 Intel 8282和 8283等。

两片总线收发器芯片(用于增强总线的负载能力)

对 AD15~ AD0 中的数据信息进行缓冲和驱动,并控制数据发送和接收的方向。该芯片在总线周期的 T2 时钟周期开始工作。

常用的总线收发器芯片有: 74LS245、 Intel 8286和 8287等。

2) 总线锁存器和总线收发器

Page 88: 第2章 8086系统结构

三态锁存器

具有三态和锁存功能的驱动器

三态锁存器 74LS373

D0 Q0D7 Q7

OE

G

功能表

OE G D Q 0 1 0 0 0 1 1 1 0 其它 × Q0( 不变) 1 × × 高阻

OE 高阻(三态)控制

G 触发(锁存)控制

Page 89: 第2章 8086系统结构

三态锁存器 8282

DI0 DO0

DI7 DO7

OE

STB

功能表

OE STB DI DO

0 0 0

0 1 1

0 其它 × Q0( 不变)

1 × × 高阻

OE 高阻控制

STB 触发控制

Page 90: 第2章 8086系统结构

8282 锁存器和 8088连接

8282

DI0DI1

DI2

。。。

DI7

OE

DO0DO1DO2DO3DO4DO5DO6DO7STB

AD0AD1AD2AD3AD4AD5AD6AD7

ALE

A8A9

A15

A16A17A18A19

.

.

.

.

.

.

8282OE

STB

8088

地址

数据OE

OE 输出允许 :OE=0 D7~D0 输出

( 1) ALE = STB 出现正脉冲时 ,AD7~AD0 出现低 8 位地址信号 ,将锁存 8 位地址。( 2) ALE = STB = 0 时,出现数据 ,不会影响已锁存地址信息。

Page 91: 第2章 8086系统结构

单向 ( 用于地址、控制总线的驱动 )

双向 ( 用于数据总线的驱动 )

普通驱动器三态驱动器

数据总线 DB

控制总线 CB

地址总线 AB

存储器

I/O接口

输入设备

I/O接口

输出设备

CPU

三态驱动器

Page 92: 第2章 8086系统结构

1G

2G

• 单向三态驱动器 74LS244

Y3~Y0

Y7~Y4

A3~A0

A7~A4

含两个 4 位三态驱动器

功能表

1G A3~0 Y3~0

0 0 0 0 1 1 1 0 高阻 1 1 高阻

2G A7~4 Y7~4

0 0 0 0 1 1 1 0 高阻 1 1 高阻

Page 93: 第2章 8086系统结构

GDIR

• 双向三态驱动器 74LS245

Y7~Y0A7~A0

功能表

G DIR 0 0 A Y 0 1 A Y 1 0 高阻 1 1 高阻

OET

• 双向三态驱动器 8286

B7~B0A7~A0 OE T 0 0 A B 0 1 A B 1 0 高阻 1 1 高阻

Page 94: 第2章 8086系统结构

A1

A2

A3

A4

A5

A6

A7

OE

B0

GND

2

3

4

5

6

7

8

9

10

19

18

17

16

15

14

13

12

1

B1

B2

B3

B4

B5

B6

B7

T/ R 11

20VCCA0

使能OE

方向控制T

0

0

0

1

操作

B =>A数据 总线A =>B数据 总线

1 X A, B隔离

•引脚图 •真值表

双向三态总线驱动器 8 位双向三态总线驱动器 8286

Page 95: 第2章 8086系统结构

DEN

AD0

AD1

AD2

AD3

AD4

AD5

AD6

AD7

8286

A0

A1

A2

A3

A4

A5

A6

A7

OE

B0

B1

B2

B3

B4

B5

B6

B7

T

数据总线

DT/R

8088

8286 收发器和 8088连接

最小模式中 :在存储器访问周期 , I/O 访问周期或中断响应周期 DEN=0 ; DT/R = 1 , A=>B ; DT/R = 0 , B=>A

Page 96: 第2章 8086系统结构

在最小方式下, 8086 CPU直接产生全部总线控制信号(DT/R、 DEN、 ALE、 M/IO)和命令输出信号 (RD、 WR或INTA),并提供请求访问总线的逻辑信号 HLDA。

3) 需要说明的问题

* 返回最小方式下 8086系统配置图( 373, 245芯片)

思考:将 373, 245换成 8282, 8286行吗?

Page 97: 第2章 8086系统结构

8284

8282

存储器

8286

I/O 接口

Vcc

Vcc

CLK

MN/MX RDWR

IO/M

ALEA 16-A19

AD0-AD15

DT/RDEN

INTA

INTR

READY

RESET

8086CPU

STB

T

OE

数据总线

地址总线

OE

8086 最小模式系统配置图

时钟

发生器

BHE

BHE

在最小模式系统中,还需加入:

1片 8284A

3片 8282/8283

2片 8286/ 8287

Page 98: 第2章 8086系统结构

系统控制信号由总线控制器 8288 提供, 用于多处理机和协处理机结构中。

8284 ʱÖÓ ·¢ÉúÆ÷

8282(3)

´æ´¢Æ÷

8286

IO½Ó¿Ú

Vcc

RES

CLK

MN/MX

A16 -A 19

AD 0-AD 15

READY

RESET

8086CPU

STB

T

OE

Êý ¾Ý ×Ü Ïß

µØÖ·×Ü Ïß

OE

8288×ÜÏß¿ØÖÆÆ÷

CLK

S0S1S2

DENDT/RALE

INTA

MRDC

MWTC

IORC

IOWC

S0S1S2

8289×ÜÏ߲þöÆ÷

AEN

AEN

BHE

S0S1S2

CLK¿ØÖÆ

ϵͳÐÅ ºÅ

8086 最大组态系统配置图

二、 最大模式(组态)系统( MN/ MX 引脚接地)

8288 为总线控制器,输入 8086 的总线状态信号,输出总线命令和控制信号。

8089 为总线裁决器,用于裁决哪个处理器拥有对总线的使用权。

Page 99: 第2章 8086系统结构

一 . 指令周期、总线周期、时钟周期

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

总线周期( Bus Cycle ) : CPU完成对存储器或 I/O 端口一次访问所需的时间。(一个总线周期由几个 T 状态组成)

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

2. 5 8086CPU 时序

Page 100: 第2章 8086系统结构

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

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

T1 T2 T3 Tw Tw T4 T1 T2T4

总线周期

Page 101: 第2章 8086系统结构

二 . 几种基本时序

1. 读总线周期地址 A19---A0

M / IO :在整个读周期有效,

1= M 读, 0= I/O 读;

ALE: T1 期间出现正脉冲,

下降沿锁存地址信息;

RD : 在 T2-T3 期间有效;

DT/ R :在整个总线周期为低

电平,表示读周期;

DEN :在 T2-T3 期间为低电

平,表示数据有效。

T1 T2 T3 T4

CLK

M/IO 1=IO 0=M

A19/S6-A16/S3 A19-A16 S6-S3

AD15-AD0 A15-A0 DATA IN

ALE

RD

DT/R

DEN

BHE/S7

存储器读时序

Page 102: 第2章 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

BHE/S7

2、 T1 结束

ALE=0 锁存地址信号 A19~ A0

存储器读时序说明

3、 T2开始 地址信号消失

RD= 0 ,存储器开始读

DEN= 0, DB上允许数据有效 4、 T4开始

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

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

1、 T1开始 (T1 下降沿 )

M/ IO= 1 ,存储器操作

20 位地址信号输出, BHE 信号有效

ALE= 1 , DT/R= 0 允许 CPU读入

Page 103: 第2章 8086系统结构

T1 T2 T3 Tw

CLK

M/IO 0=IO 1=M

A19/S6-A16/S3

A19-A16 S6-S3

AD15-AD0 A15-A0

ALE

RD

DT/R

DEN

DATA IN

READY

WAITREADY

T4

具有等待状态的存储器读时序

8086在 T3 状态的的前沿采样READY 线,若发现其为低,则在 T3周期结束后,插入一个 Tw 状态。以后在每个 Tw 周期的前沿采样READY 线,只有在发现它为高电平时,才在这个 Tw结束后进入 T4 周期。

具有等待状态的存储器读时序

Page 104: 第2章 8086系统结构

2. 存储器写周期

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

存储器写时序

AD15 ~ AD0 :在 T2~T4 期间CPU 送上欲输出的数据,而无高阻态;

存储器写时序与存储器读时序相似,其不同点在于:

WR :在 T2~T4 期间 WR有效;DT/R :在整个总线周期内为高,表示写周期,在接有数据收发器的系统中,用来控制数据传输方向。

Page 105: 第2章 8086系统结构

存储器写时序说明

2、 T1 结束

ALE=0 锁存地址信号 A19~A03、 T2开始

WR= 0 ,存储器开始写

DEN= 0, DB上允许数据有效 4、 T4开始

数据已写至存储器

WR、 DEN恢复为 1

5、 T4 结束

写周期结束

1、 T1开始

M/ IO= 1 ,存储器操作

20 位地址信号输出, BHE 信号有效

ALE= 1 , DT/R= 1, CPU 输出

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

Page 106: 第2章 8086系统结构

CLK

ÄÚ²¿RESET

×ÜÏß ×ÜÏß ¸¡¿Õ

RESET

复位时序

3. 系统复位

当 8086在 RESET 引线上检测到一个脉冲的正沿时,停止正在进行的所有操作,处于初始化状态,直到 RESET信号变低。

CPU中的部分 内容标志位 清除

IP 0000HCS FFFFHDS 0000HSS 0000HES 0000H

指令队列 空中断请求 屏蔽

系统复位,各寄存器的状态:

Page 107: 第2章 8086系统结构

作业二:

教材: P55 习题

1, 2, 6, 7, 8, 9,

10, 12, 13