View
84
Download
0
Category
Preview:
DESCRIPTION
第二章 8086 系统结构. 8086CPU 结构 8086 引脚 8086 存储器 8086 系统配置. 本章学习要点. 寄存器用途 存储器分段 系统配置 时序. 2 、单总线、累加器结构。“单总线”指微处理器内部总线。. 8086CPU 结构. 16 位微处理器结构的特点:. 1 、引脚功能复用。如数据线双向,通过“读 / 写”控制实现数据的“读”或“ 写”。. - PowerPoint PPT Presentation
Citation preview
第二章 8086系统结构
8086CPU结构8086引脚8086存储器8086系统配置
本章学习要点• 寄存器用途• 存储器分段• 系统配置• 时序
8086CPU结构
16 位微处理器结构的特点: 1 、引脚功能复用。如数据线双向,通过“读 / 写”控制实现数据的“读”或“ 写”。
3 、可控三态电路。微处理器的外部总线,即微型计算机的局部三总线允许同时连接多个部件 ( 如存储器、 I/O 接口等 ) ;这些部件都以可控三态电路与三总线连接,不工作时该三态电路处于高阻状态。 4 、总线分时复用。
2 、单总线、累加器结构。“单总线”指微处理器内部总线。
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 内部结构
8086CPU结构• 8086CPU 的内部结构由两部分组成:总线接口部
件 BIU 、执行部件 EU• BIU :是 CPU 与内存和 I/O 接口的信息传送;完
成由 16bit 段地址和 16bit 偏移地址形成 20bit 物理地址、总线控制逻辑、完成 CPU 与内存和 I/O接口的信息传送、从内存取指令代码后组成指令队列。负责取指令;存、取操作数。
• EU :负责分析指令、执行指令;进行算逻运算、偏移地址计算、向 BIU 提供指令执行结果的数据和偏移地址。
8086CPU 寄存器结构 寄存器是 CPU 内部的存储单元,可直接参与 CPU 的运算 (ALU 运算和地址运算 ) ,其速度比内部存储器快。
• 通用寄存器• 指针和变址寄存器• 段寄存器• 指令指针• 标志寄存器
通用寄存器
AH
DH
CLCH
BLBH
AL
DL
AX
BX
CX
DX
累加器基址寄存器计数寄存器数据寄存器
存放 8 位数据、 16 位数据或地址。
八个通用寄存器 /四个数据寄存器
指针 / 变址寄存器 SP ( 堆栈指针 )
BP ( 基址指针 )
DI ( 目的变址 )
SI ( 源变址 )
SP 在堆栈操作中指示栈顶的地址。 BP 是堆栈段操作数的地址或变址寻址的基址。
BP 、 SP 用于访问堆栈段的内存。
SI 、 DI 用于访问数据 / 附加段的内存。
SI 、 DI 在串操作中分别作为数据 / 附加段的源地址或目的地址的指针。
这四个寄存器只能按 16 位操作
段寄存器存放每一段的起始地址
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 位数据在内存的物理地址。
指令指针寄存器 指令指针寄存器 IP ,存放下一条指令在代码段的段内偏移地址。程序运行中, CPU 自动修改 IP 的内容。
有效地址 16*CS+IP
标志位寄存器标志寄存器 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 。
标志位寄存器 Interrupt enable 中断允许标志:已设置为 CPU 允许接受外部中断请求, IF = 1 。 Direction 方向标志:已设置为串操作指令为自动减 1 变址, DF = 1 。
Trap 单步标志:调试程序时已设置为单步操作。
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
8086CPU的工作模式 8086/8088CPU 有最小工作模式和最大工作模式之分。 最小工作模式:用于单机系统,系统控制信号全部由8086 直接提供。 最大工作模式:用于多机系统,系统控制信号由另设的总线控制器 8288 提供。
8086CPU 引脚功能8086 的 40 条引脚信号按功能可分为 4 部分 :地址总线、数据总线、控制总线以及其它(时钟与电源)。由于受当时工艺的限制,部分管脚采用了分时复用的方式。
最小模式下的引脚说明 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” 。
S6 :为低电平 S5 指示中断允许 IF 状态
S4 S3当前正在使用的段寄存器
0 0 ES
0 1 SS
1 0 CS 或未使用任何段寄存器
1 1 DS
BHE /S7 (Bus High Enable/Status) : 数据总线高 8 位使能和状态复用信号,输出在总线第一周期, 有效,表示数据线上高 8 位数据有效。该信号与 A0 (地址信号最低位)结合,以决定数据字是高字节工作还是低字节工作。其它周期是 输出状态信息 S7 。 S7 在 8086 中未定义。
BHE
同工作方式有关的控制信号
MN/
最小 / 最大方式控制线,用来控制 8086 的工作方式。接 +5V 时, 8086 处于最小方式;接地时, 8086 处于最大方式,构成一个多处理器或协处理器系统。
MX
脚 最大 最小 脚 最大 最小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 个引脚
、 、 译码表操作类型( 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
总线周期状态信号:三态、输出
R/DT DENIO/M在最小方式下是: 、 和
存储器 /IO 控制信号:输出、三态= H ,访问存储器; = L 访问 I/O端口。
IO/M
数据发送 / 接收信号:输出、三态= H , CPU 是进行写操作; = L 读操作
R/DT
数据允许信号:输出、三态,用作系统中总线收发器的允许控制信号。
DEN
和请求 / 允许总线访问控制信号:双向,前优先级高在最小方式下,是 HOLD 和 HLDA 。 HOLD 为保持请求信号:输入; HLDA 为保持响应信号:输出。
0GT/RQ 1GT/RQ
QS1 QS0 编码含义
0 0 无操作0 1 从队列中取第一个字节
1 0 队列已空
1 1 从队列中取后续字节
QS1 , QS0 :指令队列状态信号:输出
在最小方式下是 ALE 和 。ALE 是地址锁存允许信号:输出; 是中断响应信号:输出、三态。
INTA
INTA
LOCK 总线优先权锁定信号:输出、三态用来封锁外部处理器的总线请求,输出低电平时,外部处理器不能控制总线 ; 靠 LOCK 指令在程序中设置。在最小方式下,是 信号,输出、三态。WR
不受工作模式影响的控制引脚 读控制信号:三态、输出 READY准备就绪信号:输入。当被访问的部件无法
在 8086CPU规定的时间内完成数据传送时,该部件向 8086CPU发出 READY = L ,使 8086 处于等待状态,插入一个或几个等待周期 TW ;当被访问的部件可以完成数据传输时,被访问的部件将使READY = H (高电平), 8086CPU继续运行。
RD
INTR 中断请求信号:输入 NMI :不可屏蔽中断请求信号:输入 :等待测试控制信号:输入 RESET :复位信号:输入。
TEST
复位后标志寄存器 PSW 、段寄存器、指令指针 IP
以及指令队列清零,代码段寄存器 CS 为 FFFFH 。
CLK :时钟信号,输入VCC :电源 5V ( 5% )VSS : 地
8086存储器组织一、存储器地址的分段和物理地址形成
存储器地址空间 1MB , 20bit 地址线; ALU 的运算能力 16bit 。将整个存储器分为若干个逻辑段,每段内地址 16bit ,即最多地址空间 64KB 。
段地址 0000
段内偏移 ( 有效 ) 地址 0000
物理地址 (20bit)
16bit
16bit
20bit
二、存储器逻辑地址
存储器的物理地址是 20 位二进制数,无法用十六进制寄存器存放。 可以用二个无符号十六进制数按特定方式运算后得到20 位物理地址。这二个十六进制数分别是段地址和偏移地址。
存储器的任一个物理地址(绝对地址)由段地址和偏移地址 ( 或称段内有效地址 EA) 组成。
物理地址=段基址 ×16+ 偏移地址
内存
IP
CS
SI 、 DI 、 BX
DS
SP 、 BP
SS
数据段
堆栈段
代码段
操作类型 隐含段地址 替换段地址 偏移地址取指令 CS 无 IP
堆栈操作 SS 无 SP
BP间址 SS CS 、 DS 、 ES 有效地址 EA
存取变量 DS CS 、 DS 、 ES 有效地址 EA
源字符串 DS CS 、 DS 、 ES SI
目标字符串 ES 无 DI
逻辑地址的来源
内存
字 (16bit) 数 据 地 址1422EH 。低位低地址,高位高地址
H( 高 8bit)
L( 低8bit)
14230H
1422FH
1422EH
1422DH
字节地址字节地址
三、字节地址和字地址
内存以字节为单位,字节数据 (8 位 ) 地址就是字节地址。 字数据为 16 位,需二个字节存储。低 8 位存放在低地址,高 8 位存放在高地址;字地址为低字节地址。原则上字地址使用偶地址。
四、堆栈的概念
堆栈是利用 RAM 区中某一指定区域 ( 由用户规定 ) ,用来暂存数据或地址的存储区。
堆栈存取数据的原则是“ 先进后出”,存取数据的方法是压入 (PUSH) 和弹出 (POP)等。
堆栈区的栈底是固定的最高地址,其栈顶根据堆栈数据的压入或取出的变化不断改变。栈顶是堆栈区的最低地址,用堆栈指针 SP 表示。
每执行一条 PUSH 指令,向堆栈压入 16bit 数据,每执行一条 POP 指令,从堆栈弹出 16bit 数据,
SP = (SP) - 2 。SP = (SP) + 2 。
(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
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 位
8086CPU时序指令周期、总线周期和时钟周期
指令周期( Instruction Cycle) :执行一条指令所需要的时间。 (一个指令周期由一个或若干个总线周期组成)
总线周期( Bus Cycle ) :CPU 从存储器或 I/O端口存取一个字节的时间,
即完成一个基本动作所需的时间。 时钟周期( Clock Cycle) :
时钟频率的倒数,是 CPU 的时间基准( T 状态) ( 8086 的主频为 5MHZ ,一个时钟周期为 200ns )
一个总线周期一般由四个 T 组成。 T1 :输出地址;T2 、 T3 :传送数据。若存储器或外设速度慢,可插入等待周期 Tw 。
若一个总线周期后不执行下一个总线周期,即总线上无数据传输操作,系统总线处于空闲状态,此时执行空闲周期。
T1 T2 T3 Tw Tw T4 T1 T2T4总线周期
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 读入
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 ,存储器读周期结束
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 写出
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 上允许数据有效
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 。
中断响应周期中断是另一种 CPU 与 I/O端口数据传送的方式。
T1 T2 T3 T4
CLK
T1 T2 T3 T4
ALE
中断类型INTA
AD15-AD0
中断响应周期时序
中断请求信号有效,且 CPU开中断,则 CPU 在执行完当前指令后,响应中断。在响应中断时, CPU 执行两个中断响应周期。
在每一个中断响应周期,都给出中断响应信号 INTA ,第一个响应周期,使 AD15~AD0浮空;第二个响应周期,被响应的外设应将中断类型号送到数据线上, CPU 从数据线读入中断类型。
第二章练习• 5 , 10 , 11 , 12 , 15
Recommended