【 本章重点 】 本章主要讲述 8086的硬件结构, 外部引脚,
内部寄存器的组织, 和总线时序 。
【 本章难点 】 引脚功能和总线时序 。
第 2章 8086微处理器
2.2.1 8086的结构特点
微处理器执行一段程序通常是通过重复执行如下步骤来完成 。
即:
( 1) 从内存储器中取出一条指令, 分析指令操作码;
( 2) 读出一个操作数 ( 如果指令需要操作数 ) ;
( 3) 执行指令;
( 4) 将结果写入内存储器 ( 如果指令需要 ) 。
§ 2.1 8086 CPU的结构
AH AL
BH BL
CH CL
DH DL
SP
BP
DI
SI
通用寄存器
CS
DS
SS
ES
IP
内部暂存器

ALU
运算寄存器
执行部分
控制电路
1 2 3 4 5 6
输入 / 输出
控制电路
标志
地址加法器
20 位地址
16 位地址
外部总线
指令队列缓冲器
总线接口部件
( BIU )
执行部件
( EU )
16 位地址
AX
BX
CX
DX
8 位
图 2-1 8086的结构框图
1.总线接口部件
( 1) 4个段地址寄存器
CS--16位的代码段寄存器
DS--16位的数据段寄存器
ES--16位的扩展段寄存器
SS--16位的堆栈段寄存器
( 2) 16位的指令指针寄存器 IP
( 3) 20位的地址加法器
( 4) 6字节的指令队列。
2,执行部件
( 1) 4个通用寄存器, 即 AX,BX,CX,DX;
( 2) 4个专用寄存器, 即基数指针寄存器 BP,堆栈指
针寄存器 SP,源变址寄存器 SI,目的变址寄存器 DI;
( 3) 标志寄存器 Flag;
( 4) 算术逻辑单元 ALU;
8086的执行部件 ( EU) 有如下特点:
( 1) 4个通用寄存器既可以作为 16位寄存器使用, 也可
以作为 8位寄存器使用 。
( 2) AX寄存器也常称为累加器,8086指令系统中有许
多指令都是通过累加器的动作来执行的。
寄存器 执行操作
AX 整字乘法, 整字除法, 整字 I/O
AL 字节乘法, 字节除法, 字节 I/O,转移, 十进制算
术运算AH 字节乘法, 字节除法
BX 转移
CX 串操作, 循环次数
CL 变量移位或循环控制
DX 整字乘法, 整字除法, 间接寻址 I/O
SP 堆栈操作
SI 字符串操作
DI 字符串操作
表 2-1 寄存器的主要用途
( 3) 加法器是算术逻辑部件主要部件, 绝大部分指令
的执行都是由加法器完成的 。
( 4)标志寄存器共有 16位,其中,7位未用,所用的
各位含义如下:
O D I T S Z A P C
015
状态标志有 6个,即 SF,ZF,PF,CF,AF和 OF。
符号标志 SF(Sign Flag):它和运算结果的最高位相
同。若运算结果最高位为 1,则 SF=1,否则 SF=0。
零标志 ZF(Zero Flag):如果当前的运算结果为
零, 则 ZF=1,否则 ZF=0。
奇偶标志 PF(Parity Flag):如果运算结果的低 8位
中所含的 1的个数为偶数,则 PF=1,否则 PF=0。
进位标志 CF(Carry Flag):当执行一个加法运算
使最高位产生进位时,或者执行一个减法运算引
起最高位产生借位时,则 CF=1,否则 CF=0。
辅助进位标志 AF(Auxiliary Carry Flag):当
加法运算时, 如果第三位往第四位有进位, 或者
当减法运算时, 如果第三位从第四位有借位, 则
AF=1,否则 AF=0。
溢出标志 OF(Overflow Flag):当运算过程中产生
溢出时,会使 OF=1,否则 OF=0。
控制标志有 3个, 即 DF,IF,TF。
方向标志 DF(Direction Flag):这是控制串操作指令的
标志 。 如果 DF=0,则串操作过程中地址会不断增值,
反之, 如果 DF=1,则串操作过程中地址会不断减值 。
中断标志 IF(1uterrupt Enable Flay):这是控制可屏蔽
中断的标志 。 如 IF=0,则 CPU不能对可屏蔽中断请求作
出响应, 如果 IF=1,则 CPU可以接受可屏蔽中断请求 。
跟踪标志 TF(Trap Flay):如果 TF=1,则 CPU按跟踪方式
执行指令。
2.2.2 8086的总线工作周期
在 8086中,一个最基本的总线周期由 4个时钟周期组成
一个总线同期
T 1 T 2 T 3 T W T 4
一个总线同期
T 1 T 2 T 3 T W T 4T 1 T 1
① 在 T1状态, CPU往多路复用总线上发出地址信息, 以指
出要寻址的存储单元及外设端口的地址 。
② 在 T2状态, CPU从总线上撤消地址, 而使总线的低 16位
浮置成高阻状态, 为传输数据作准备 。 总线的最高 4位
(A19~ A16)用来输出本总线周期状态信息 。 这些状态信息用
来表示中断允许状态, 当前正在使用的段寄存器名等 。
③ 在 T3状态, 多路总线的高 4位继续提供状态信息, 而
多路总线的低 16位上出现由 CPU写出的数据或者 CPU从
存储器或端口读入的数据 。
④ 在有些情况下, 被写入数据或者被读取数据的外设
或存储器不能及时地配合 CPU传送数据 。 这时, 外设或
存储器会通过, READY”信号线在 T3状态启动之前向
CPU发一个, 数据未准备好, 信号, 于是 CPU会在 T3之
后插入 1个或多个附加的时钟周期 TW。 TW也叫等待状态 。
在 Tw状态, 总线上的信息情况和 T3状态的信息情况一样 。
当 指 定 的 存 储 器 或 外 设 完 成 数 据 传 送 时, 便在
,READY”线上发出, 准备好, 信号, CPU接收到这一
信号后, 会自动脱离 TW状态面进入 T4状态,
⑤ 在 T4状态,总线周期结束。需要指出的是,只有在
CPU和内存或 I/ O接口之间传输数据,以及填充指令队列
时,CPU才执行总线周期。可见,如果在 1个总线周期之
后,不立即执行下 1个总线周期。那么,系统总线就处在
空闲状态,此时,执行空闲周期。
§ 2.3 8086/8088的引脚信号和工作模式
2.3.1 最小模式和最大模式的概念
所谓最小模式, 就是在系统中只有 8086一个微处理器 。
在这种系统中, 所有的总线控制信号都直接由 8086产生,
因此, 系统中的总线控制逻辑电路被减到最少 。
最大模式是相对最小模式而言,在此系统中,包含
两个或两个以上的微处理器,其中一个主处理器就是
8086,其他的处理器称为协处理器,它们是协助主处理
器工作的。和 8086配合的协处理器有两个。一个是数值
运算协处理器 8087,一个是输入/输出协处理器 8089。
2.3.2 8086的引脚信号和功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
AD 14
AD 13
AD 12
AD 11
AD 10
AD 9
AD 8
AD 7
AD 6
AD 5
AD 4
AD 3
AD 2
AD 1
AD 0
NMI
INTR
CLK
GND
VCC
A 15
A 16 / S 3
A 17 / S 4
A 18 / S 5
A 19 / S 6
BHE / S 7
MN / MX
RD
HOLD ( RQ / GT
HOLD ( RQ / GT
WR ( LOCK )
M / IO ( S 2 )
DT / R ( S 1 )
DEN ( S 0 )
ALE ( QS 0 )
INTA ( QS 1 )
TEST
READY
RESET
GND
1,AD15~ AD0地址/数据复用引脚 (双向工作 )
2,A19/ S6~ A16/ S3地址/状态复用引脚 (输出 )
3,BHE/S7高 8位数据总线允许/状态复用引脚(输出)
BHE A0 操 作 所用的数据引脚
0 0 从偶地址单元开始读/写一个字 AD15~ AD0
0 1 从奇地址单元或端口读/写一十字节 AD15~ AD8
1 0 从偶地址单元或端口读/写一个字节 AD7~ AD0
1 1 无效
0 1 从奇地址开始读/写一个字 AD15~ AD0
1 0 在第一个总线周期, 将低 8位数字送到 AD15~ AD8在第二个总线周期, 将高 8位数字送到 AD
7~ AD0
4,NMI 非屏蔽中断信号
5,INTR可屏蔽中断请求信号
6,RD读选通信号
7,CLK时钟信号
8,RESET复位信号
9,READY准备就绪输入信号
10,TEST测试信号
11,MN/MX最小/最大模式控制信号
12,GND地和 VCC电源
2.3.3 8086最小工作方式
当 8086第 33脚 MN/ MX固定接到 +5V时,就处于最
小工作模式下第 24脚~第 3l脚的信号含义如下:
1,INTA中断响应信号 (输出 )
2,ALE地址锁存允许信号
3,DT/R数据收发信号
5,M/IO存贮器/输入/输出控制信号
6,WR写信号
数据传输方式
I/O读 0 0 1
I/O写 0 1 0
存贮器读 1 0 1
存贮器写 1 1 0
M/IO RD WR
表 2-3 最小模式数据传输方式
7,HOLD总线保持请求信号
8,HLDA总线保持响应信号
9,SS0 状态输出线
性能
1 0 0 中断响应
1 0 1 读 IO/M端口
1 1 0 写 IO/M端口
1 1 1 暂停
0 0 0 取指
0 0 1 读存贮器
0 1 0 写存贮器
0 1 1 无作用
M/IO DT/R SS0
CLK RESET
READY
MX/MN
ALE
A
19
~ A
16
B H E
AD
15
~ AD
0
D EN
R/DT
IO/M
WR
RE
HOLD
HLDA
INTR
I N T A
8086
地址锁存器
STB
8282
( 三片 )
收发器
8286
( 二片 )
( 可选 )
OE
T
地址总线
B H E
数据总线
控制总线
8284 A
RESET
READY
+ 5 V
图 2-7是 8088在最小模式下的典型配置
2.3.4 8086最大工作方式
当 MN/MX加上低电平时,8086CPU工作在最大
模式下。此时 8086CPU工作于多处理器系统。
1,QSl和 QS0指令队列状态信号
2,S2,S1,S0总线周期状态信号
3,LOCK总线封锁信号
4,RQ/GT1,RQ/GT0总线请求信号输入/总线请求
允许信号输出
CLK RESET
READY
MX/MN
A
19
~ A
16
BHE
AD
15
~ AD
0
INTR
8086
地址锁存器
STB
8282
( 三片 )
收发器
8286
( 二片 )T
B HE
8284 A
CLK
RESET
READY
OE
地址总线
0
S
1
S
2
S
总线控制器
8288
OE
8259 A
及有关电路
&
I NT A
0
GT/RQ
1
GT/RQ




数据总线
控制总线
图 2-8 8086最大工作模式的典型配置
1.总线控制器 8288 命 令
信 号
发 生 器
控 制 信 号
发 生 器
状 态
译 码 器
控 制
电 路
M R D C
M W T C
A M W T C
I O R C
A I O W C
I N T A
I O W C
D T / R
D E N
A L E
M C E / P D E N
总 线 命 令
信 号
总 线 控 制
信 号
S
2
S
1
S
0
C L K
I O B
C E N
A E N
状 态
信 号
控 制
输 入
1
2
3
4
5
6
7
8
9
1 0 1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
8 2 8 8
I O B
C L K
S
1
D T / R
A L E
A E N
M R D C
A M W T C
M W T C
G N D
V
C C
S
0
S
2
M C E / P D E N
D E N
C E N
I N T A
I O R C
I O W C
A I O W C
2.总线仲裁控制器 8289
多 路 总 线
接 口
局 部 总 线
接 口
控 制
电 路
I N I T
B C L K
B R E Q
B P R N
B P R O
B U S Y
C B R Q
总 线 仲 裁
信 号
C L K
I O B
R E S B
L O C K
控 制
输 入
状 态
译 码 器
S
2
S
1
S
0
状 态
信 号
仲 裁 电 路
A N Y R Q S T
C R Q L C K
S Y S B / R E S B
A E N
1
2
3
4
5
6
7
8
9
1 0 1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
8 2 8 9
I O B
C L K
S
1
A E N
G N D
V
C C
S
0
S
2
R E S B
B C L K
I N I T
B R E Q
B P R O
B P R N
L O C K
C R Q L C K
A N Y R Q S T
C B R Q
B U S Y
2.3.5 8086系统复为和启动操作
寄存器名称 寄存器状态
标志寄存器( FR)
指令指针寄存器( IP)
CS段寄存器
DS段寄存器
SS段寄存器
ES段寄存器
指令队列
其它寄存器
清零
0000H
FFFFH
0000H
0000H
0000H

0000H
表 2-9复位时 8086/8088个内部寄存器的值
由表 2-9中看到,在复位的时候,代码段寄存器 CS和指令
指针寄存器 IP分别初始化为 FFFFH和 0000H。所以,8086
/ 8088在复位之后再重新启动时,便从内存的 FFFF0H处
开始执行指令,使系统在启动时,能自动进入系统程序。
在复位时,由于标志寄存器被清零,即所有标志位都被
清除了,因而,系统程序在启动时,总是要通过指令来
设置各有关标志。复位信号 RESET从高电平到低电平的
跳变会触发 CPU内部的一个复位逻辑电路,经过 7个时钟
周期之后,CPU就被启动而恢复正常工作,即从 FFFF0H处
开始执行程序。
§ 2.4 存贮器组织
2.4.1由段寄存器、段偏移地址确定物理地址
20位物理地址 =段寄存器的内容 × 16+偏移地址
段寄存器的内容 × 16(相当于左移 4位)变为 20位,再在低
端 16位加上 16位的偏移地址,便可得到 20位的物理地址。
这里仅以 8086CPU复位后如何形成启动地址为例,说明物理
地址的计算方法。复位时 CS的内容为 FFFFH,IP的内容为
0000H。复位后的启动地址由 CS段寄存器和 IP的内容共同决
定,即:启动地址 =CS× 16+IP
=FFFF0H+0000H
=FFFF0H
2 0 位物理地址
偏移量
段寄存器 0000
15 0
15 0
19 0
2.4.2段寄存器的使用 代码段
堆栈段
数据段
IP
CS
SP
SS
BX
DS
访问存贮器类型 默认段寄存器 可指定段寄存器 段内偏移地址位源
取指令码 CS 无 IP
堆栈操作 SS 无 SP
串操作源地址 DS CS,ES,SS SI
串操作目的地址 ES 无 DI
BP用作基址寄存器 SS CS,DS,ES 寻址方式确定有效地址
一般数据存取 DS CS,ES,SS 寻址方式确定有效地址
表 2-10 段寄存器使用时的一些基本约定