Post on 01-Jan-2016
description
1
第二章 8086 系统结构
2-2 8088/8086 的存储器组织
2-3 8086 的系统配置及引脚功能
2-4 8086CPU 时序
2-1 8086CPU 结构
2-1 8086CPU 结构第二章 8086 系统结构
一、 8086CPU 的内部结构
属第三代微处理器 运算能力: 数据总线: DB- 16bit ( 8086 ) / 8bit ( 8088 ) 地址总线: AB - 20bit 内存寻址能力 220 = 1MB
3
80868086 的内部结构从功能上分的内部结构从功能上分成两部分 : 总线接口部件 BIU:
总线接口单元 BIU ,负责控制存储器读写。 执行部件 EU:
执行单元 EU 从指令队列中取出指令并执行。特点特点:
取指令和执行指令分开进行,提高了速度。
2.2 IA - 32 微处理器的功能结构
4
2.2.1 8086
的功能结构
EU控制器
ALU
暂 存 器
标志寄存器
8 位队列总线
总
线
控
制
逻
辑
16 位内部总线
地址加法器20 位地址总线
16位数据总线
执行部件 EU 总线接口部件 BIU
1 2 3 4 5 6指令队列
通用寄存器AX AH ALBX BH BLCX CH CLDX DH DL
SP BP DI SI
CSDSSSES
8088808880868086
IP暂存器
80868086
总线总线 存存
储储器器接接口口
5
ES
SS
DSCS
ÄÚ²¿¼Ä´æÆ÷ ÊäÈë / Êä³ö¿ØÖÆ µç·
1 432
20λ
16λ
8086×ÜÏß
Ö¸Áî ¶ÓÁÐ
×ÜÏß ½Ó¿Úµ¥Ôª
65
16λ
IP
1. 总线接口部件 BIU ( Bus Interface Unit) 组成: 16 位段寄存器,指令指针, 20位地址加法器,总线控制逻辑, 6 字节指令队列。作用:负责从内存指定单元中取出指令,送入指令流队列中排队;取出指令所需的操作数送 EU 单元去执行。工作过程:由段寄存器与 IP 形成 20 位物理地址送地址总线,由总线控制电路发出存储器“读”信号,按给定的地址从存储器中取出指令,送到指令队列中等待执行。
* 当指令队列有 2 个或 2 个以上的字节空余时, BIU 自动将指令取到指令队列中。若遇到转移指令等,则将指令队列清空, BIU 重新取新地址中的指令代码,送入指令队列。
* 指令指针 IP 由 BIU 自动修改, IP 总是指向下一条将要执行指令的地址。
2. 指令执行部件 EU ( Exection Unit)
组成:通用寄存器,标志寄存器, ALU ,EU 控制系统等。
±êÖ¾¼Ä´æÆ÷
ALU
DI
DH
SP
SI
BP
DL
ALAH
BLBH
CLCH
EU¿ØÖÆϵͳ
作用:负责指令的执行,完成指令的操作。
工作过程:从队列中取得指令,进行译码,根据指令要求向 EU 内部各部件发出控制命令,完成执行指令的功能。若执行指令需要访问存储器或 I/O 端口,则 EU 将操作数的偏移地址送给 BIU ,由 BIU 取得操作数送给 EU 。
3. 8086CPU 结构的特点: 减少了 CPU 为取指令而等待的时间,提高了 CPU 的运行速度。
È¡Ö¸ 1 Ö´ÐÐ 1
È¡Ö¸ 1
È¡Ö¸ 4È¡Ö¸ 3È¡Ö¸ 2
æ
Ö´ÐÐ 3 Ö´ÐÐ 4Ö´ÐÐ 2
æææ
Ö´ÐÐ 1 Ö´ÐÐ 2 Ö´ÐÐ 3 Ö´ÐÐ 4
È¡Ö¸ 2 È¡Ö¸ 3 È¡Ö¸ 4 È¡Ö¸ 6È¡Ö¸ 5
Ö´ÐÐ 6Ö´ÐÐ 5
æ æææææ
CPU
BUS
EU
BIU
BUS
t
t
8
8088 的指令执行过程
SP(¶ÑÕ»Ö¸Õë)BP(»ùÊýÖ¸Õë)
DI(Ä¿µÄ ±äÖ·)SI ( Ô´±ä Ö·)
F (״̬±êÖ¾)IP ( Ö¸ÁîÖ¸Õë)
DS (Êý¾Ý¶Î)¾)CS (Âë¶Î)
ES (¸½¼Ó¶Î)SS (¶ÑÕ»¶Î)ë)
二、 8088/8086 的寄存器结构
1. 通用寄存器组
3. 2 个控制寄存器
4. 4 个段寄存器
8088/8086 有 14 个 16 位寄存器
2. 指针 / 变址寄存器
16 位 8 位 8 位 AX → AH AL BX → BH BL CX → CH CL DX → DH DL
* 4 个 16 位的 数据寄存器( AX , BX , CX , DX )寄存器既可存放数据,也可存放地址。
1. 通用寄存器组
寄存器 操作
AX 字乘/除指令中作为累加器,字I/O指令中作为数据寄存器
AL 字节乘/除指令,字节 I/O,转移,十进制运算
AH 字节乘/除指令(高八位/余数),XLAT指令中作为目的寄存器
BX 作为地址/基址寄存器CX 串操作时,循环计数器
CL 变量位移或循环操作时用作计数器
DX 字乘/除指令(高十六位/余数),I/O间接寻址
* 既可作为 16 位寄存器也可作为 8 位寄存器使用。(例: AH , AL ) 8bit 寄存器只能存放数据。
* 各寄存器隐含用法
* 通用性强,对任何指令都具有相同的功能
2. 指针及变址寄存器( SP , BP , SI , DI )
SP 堆栈指针
BP 在间址寻址中作基址指针
SI地址和变址寄存器,串操作时的源变址寄存器(隐含)
DI 地址和变址寄存器,串操作时的目的变址寄存器(隐含)
* BP , SP 寄存器称为指针寄存器,与 SS 联用。
* DI , SI 寄存器称为变址寄存器,与 DS 联用,在串指令中, SI , DI 均为隐含寻址,此时, SI与 DS 联用, DI 与 ES 联用。
3. 指令指针和状态寄存器
( 1 ) 指令指针 I P 是一个 16 位的专用寄存器。当 BIU 从内存中取出一条指令,自动修改 IP ,始终指向下一条将要执行的指令在现行代码段中的偏移量。 8086/8088中的某些指令执行后会改变 IP 的内容,但用户不能编写指令直接改变 IP 的内容。
* I P 是指令地址在代码段内的偏移量(又称偏移地址),IP 要与 CS 配合构成共同物理地址。
( 2 ) 状态(标志)寄存器 PSW PSW 是一个 16 位的专用寄存器( 6 位状态位, 3 位控制位)存放运算结果的特征。
13
标 志 寄 存 器 Flags
唯一能按位操作的寄存器只定义了其中 9 位,另外 7 位未定义
(保留)6 位状态标志: OF 、 SF 、 ZF 、 PF 、
CF 、 AF3 位控制标志: DF 、 IF 、 TF
OF DF IF TF SF ZF AF PF CF
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
14
状 态 标 志用来记录程序中运行结构的状态信息。由于这些状态信息用来记录程序中运行结构的状态信息。由于这些状态信息往往作为往往作为后续条件转移指令的转移控制条件后续条件转移指令的转移控制条件,所以也称作,所以也称作条件码。条件码。
OF(Overflow Flag) :符号数溢出标志
OF=1:
判定方法: OF = 最高位进 / 借位次高位进 / 借位
加法运算时,若两个数符号相同,但结果符号相反。加法运算时,若两个数符号相同,但结果符号相反。
减法运算时,若两个数符号相反,结果符号与减数符号相同。减法运算时,若两个数符号相反,结果符号与减数符号相同。
15
状 态 标 志AF ( Auxiliary Carry Flag ):辅助进 / 借位标
志,半字节进位标志。用于 BCD 码调整指令。 AF=1 :在字节操作时,数据的 D3 位向 D4 位产生了
进 / 借位。这个标志主要用于十进制数算术运算指令中。
99 + 8+ 8
1717
0 0 0 0 0 0 0 0 11 0 0 1 0 0 1+ 0 0 0 0 + 0 0 0 0 11 0 0 0 0 0 0
0 0 0 0 0 0 11 0 0 0 1 0 0 0 1
16
状 态 标 志CF ( Carry Flag ):进位 / 借位标志,当结果的最高位 ( 字节操作时的 D7 或字操作时的 D15) 产生一个进位或借位,则 CF=1 。
这个标志主要用于多字节数的加、减法运算。这个标志主要用于多字节数的加、减法运算。
17
状 态 标 志 SF ( Sign Flag ):符号标志
记录运算结果的符号,结果为负 SF = 1 ;否则 SF=0;
ZF ( Zero Flag ):零标志 ZF=1 :运算结果为 0 (与是否进位无关)。 ZF=0 :运算结果不是 0 。
18
状 态 标 志PF (Parity Flag) :奇偶标志(低 8 位)
PF=1: 表示结果有偶数个 1 。PF=0: 表示结果有奇数个 1 。
有些运算的操作会影响全部状态标志,如加法、减法运算;
有些操作影响部分状态标志,如移位操作;也有些指令的操作不影响任何状态标志,如通
用数据传送指令。
19
1 0 0 0 1 1 0 1 0 0 1 1 0 110
0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1+
0110011010101001
运算结果最高位为 1 SF=1∴ ;
例: 2 个数相加后,分析各标志位的值
第三位向第四位有进位 ∴ AF=1 ;
次高位向最高位有进位 ,最高位向前没有进位→ OF=10=1
最高位没有进位 ∴CF=0 ;
低 8 位中 1 的个数为偶数个 ∴PF=1 ;
运算结果本身≠ 0 ZF=0∴ ;
两个正数相加,和为负数,和超范围 两个正数相加,和为负数,和超范围 ∴ OF=1;
20
思考题:X 、 Y 分别为下列各组数,当它们分别进
行加、减运算后,其标志位: S 、 O 、 C 、P 、 Z 的状态如何?
1 ) X=21H ; Y=43H2 ) X=48H ; Y=8DH3 ) X=9AH ; Y=0BCH4 ) X = 54H ; Y=54H
21
控 制 标 志控制标志位的值不由数据运算的结果决定,而由指令直接控制标志位的值不由数据运算的结果决定,而由指令直接赋值;可以决定后续指令的执行情况。赋值;可以决定后续指令的执行情况。
DF(Direction Flag) :方向控制标志位专用于串操作指令中控制数据串的处理方向。
DF=1 :串处理方向从高地址到低地址或是“从右到左”来处理串。
DF=0 :串处理方向从低地址到高地址或是“从左到右”来处理串。
指令指令 :CLD:CLD
指令指令 :STD:STD
22
控 制 标 志IF(Interupt Flag) :中断标志位
IF=1 :允许外部可屏蔽中断 INTR ,即 CPU 可以响应 INTR 的请求。
IF=0 :关闭 INTR ,即 CPU禁止响应 INTR 的请求。
用于控制 CPU 对外部可屏蔽中断的请求。TF(Trap Flag) :跟踪标志位
用于程序调试时进行单步方式工作。 TF=1 :单步工作方式,每执行完一条指令自动
产生一次内部中断,程序暂停供检查,用于调试程序。
TF=0 : CPU正常顺序执行不产生内部中断。 TF无法直接由指令赋值!
4. 段寄存器
* CS (代码段寄存器)指向当前的代码段,指令由此段 取出;*SS (堆栈段寄存器)指向当前的堆栈段,栈操作的对象 是该段存储单元的内容;*DS (数据段寄存器)指向当前的数据段,该段中存放程 序的操作数;*ES (附加段寄存器)指向当前的附加段,主要用于字符 串数据的存放,也可以用于一般数据 的存放。
8086/8088 按信息存储的不同性质分为四类,分别由四个段寄存器存放该段的首地址,或称为段地址。
2-2 8088/8086 的存储器组织
一、存储器地址的分段
矛盾:存储器地址空间 1MB , 20bit 地址线;内部各寄存器和数据总线均为 16bit 。
¶Î 1
¶Î 2
¶Î 16
¶Î 3
00000H
0FFFFH10000H
1FFFFH20000H
2FFFFH
F0000H
FFFFFH
1. 存储器地址的分段
解决方法:将整个存储器分为若干个逻辑段,每段内地址 16bit ,即最多地址空间 64KB 。
允许各逻辑段在整个存储空间浮动,段与段之间可以是连续的,也可以是分开的或重叠的。
00000H
逻辑段 2<=64KB
逻辑段 1起点逻辑段 2起点
逻辑段 3起点
逻辑段 4起点
FFFFFH
逻辑段 1<=64KB
逻辑段 4<=64KB
逻辑段 3<=64KB
每个段的首地址称为“段基值”, “段基值”必须能被 16 整除( XXXX0H )。
程序执行前,分别对相应的段寄存器 CS , DS , SS , ES 置“段基值”,若程序长度大于 64KB ,则可通过对 CS 送新的“段基值”将程序转移到新段中。
逻辑地址:允许在程序中编排的地址;2. 20 位物理地址的形成
物理地址:信息在存储器中实际存放的地址;
对给定的任一存储单元,有两部分逻辑地址: 段基址(段地址)——由 CS , DS , SS , ES决定 段内偏移量(段内有效地址)——(该单元相对于段基址的距离)
段地址 0000
段内有效地址 + 0000
物理地址 (20bit)
16bit
16bit
20bit
27
3. 逻辑地址的来源;
操作类型 隐含段地址 替换段地址 偏移地址取指令 CS 无 IP
堆栈操作 SS 无 SP
BP 间址 SS CS 、 DS 、 ES EA
存 / 取操作数 DS CS 、 SS 、 ES EA
源字符串 DS CS 、 SS 、 ES SI
目的字符串 ES 无 DI
EA--- 有效地址,
28
代码段
数据段
堆栈段
CS
IP
DS
SI ,DI BX或
SS
SP BP或
段寄存器和其他寄存器组合指向存储单元示意图
归纳段寄存器和其他寄存器组合指向存储单元示意图如下:
29
1. 问题的提出:
二、 8086 存储器的分体结构
8 位机(MCS-51 、 8088 )的存储器地址空间和数据存储格式以字节 (8bit) 为单位组织存储器地址空间,访问一次存储器,获得一个字节的数据。 而 8086CPU 的数据总线为 16 位, CPU除了可以对一个字节寻址外,还必须能进行一个字的读写。即:如何组织数据存储格式使 CPU 访问一次存储器,获得一个字的数据。
30
硬件条件:( 1 )将 1M 的存储空间分成两个存储体:偶地址和奇地址存储体
0000000001
00002
00004
FFFFEFFFFF
00003
00005
512K*8bit
A0 =0
512K*8bit
A0=1
D0D7D8D15
( 2 )将数据总线的低 8 位与偶地址存储体数据线相连,数据总线的高 8 位与奇地址存储体数据线相连。( 3 )用地址线 A0 和 BHE 信号选择存储体
31
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 无效
3214230H
1422FH
1422EH
1422DH
字 (16bit) 数据地址 1422EH低位在低地址,高位在高地址
H( 高 8bit)
L(低 8bit)字节地址字节地址
存储器二个连续字节组成一个字,一个字中的每一个字节都有各自的字节地址。存入时以低位字节在低地址,高位字节在高地址的次序存放,字单元的地址以低位地址表示。若要求 8086 在一个总线周期访问一个整字( 16 位)时,则该字的地址为偶地址(“对准好”的字)。如果则该字的地址为奇地址(“未对准好”的字),则 8086 要用两个连续的总线周期访问一个整字,每个周期访问一个字节。
数据存放格式条件:
33
堆栈是利用 RAM区中某一指定区域 ( 由用户规定 ) ,用来暂存数据或地址的存储区。 堆栈段是由段定义语句在内存中定义的一个段,段基址由 SS 指定。 堆栈存取数据的原则是“先进后出”,存取数据的方法是压入 (PUSH) 和弹出 (POP) 。
堆栈区的栈底是固定的最高地址,其栈顶根据堆栈数据的压入或取出的变化不断改变。栈顶是堆栈区的最低地址,用堆栈指针 SP 指示。
每执行一条 PUSH 指令, SP = (SP) - 2 ,向堆栈压入 16bit 数据。以字为单元操作。 每执行一条 POP 指令,从堆栈弹出 16bit 数据, SP = (SP)+ 2 。
三、堆栈的概念
34
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
35
人。 (躯干 -> 手脚 -> 引脚 ) 功能 (眼睛 ->看 嘴 ->说 手 ->拿 脚 ->走 )
各个引脚都有其作用 , 功能复用 (残疾手 )
理解各个引脚的专门作用 . 拿东西我 ( 给我一个笔 (眼看 ,嘴说 ,腿走 ->手拿 )) 你 ( 给你一个笔 (眼看 ,手拿 ,嘴说 )) 特殊情况我要 手拿……………… . 不给 你给 给你……………… .. 不拿等待状态 .这个就是时序 .
36
2-3 8086 的引脚功能
8086CPU 是 16 位处理器,采用 40 引脚的DIP封装。 40 条引脚信号按功能可分为 4部分:地址总线,数据总线,控制总线以及其他(时钟、电源)。
37
8086/8088 的引脚图
0102030405060708091011121314151617181920
4039383736353433323130292827262524232221
GNDAD14/A14AD13/A13AD12/A12AD11/A11AD10/A10
AD9/A9AD8/A8
AD7AD6AD5
AD4AD3AD2AD1AD0NMIINTRCLKGND
VCC ( 5V )AD15/A15A16/S3A17/S4A18/S5A19/S6/BHE/S7 HIGH ( SSO )MN/MX*/RDHOLD ( /RQ/GT0* ) HLDA ( /RQ/GT1* )/WR ( /LOCK )M//IO ( /S2 )DT//R ( /S1 )/DEN ( /S0 )ALE ( QS0 )/INTA ( QS1 )/TESTREADYRESET
8086/8088
38
引脚说明 一 . 数据 / 地址总线: AD0 ~ AD15 :地址数据复用引脚,用作数据线时,可
以双向工作。在时钟周期在时钟周期 T1T1 输出地址,输出地址, T2T2 输出数据输出数据 A19/S6 ~ A16/S3 :地址状态复用引脚,用作数据线时,可以双向工作。在时钟周期在时钟周期 T1T1 输出输出 A19~A16A19~A16 高四位地高四位地址。在时钟周期址。在时钟周期 T2T2 开始,输出开始,输出 S6~S3S6~S3 状态信息。状态信息。
39
1. 与读写数据有关二 . 控制总线
BHE/S7 :高 8 位数据总线允许 / 状态复用引脚(输出)
在在 TT11 状态,状态, 80868086 输出输出 BHEBHE 信号,表示信号,表示 ADAD1515-AD-AD88 数据有效。数据有效。SS77 没有意义没有意义 ,S,S77=0.=0.
RD :读信号引脚(输出)此信号指出将要执行一个对内存或此信号指出将要执行一个对内存或 I/OI/O 端口的读操作,与端口的读操作,与 M/IOM/IO 信号信号结合,结合, RDRD 信号在信号在 TT22 、、 TT33 和和 TTWW 状态均为低电平,有效。状态均为低电平,有效。WR :写信号 ( 输出 )
当低电平有效时,表示当低电平有效时,表示 CPUCPU 当前正在进行存储器或当前正在进行存储器或 I/OI/O 写操作,写操作,它与它与 M/IOM/IO 配合,分别实现对存储器与配合,分别实现对存储器与 I/OI/O 的写入。的写入。M/IO :存储器 / 输入输出控制信号 ( 输出 )
高电平时,高电平时, CPUCPU 和存储器之间进行数据传输。和存储器之间进行数据传输。低电平时,低电平时, CPUCPU 和输入输出设备之间进行数据传输。和输入输出设备之间进行数据传输。
40
1. 与读写数据有关ALE :地址锁存允许 ( 输出 )
高电平有效,在高电平有效,在 T1T1 状态,状态, ALEALE 有效,将地址有效,将地址 // 数据复用总线上输数据复用总线上输出的地址出的地址
:数据允许信号 ( 输出、低电平有效 ) DEN
为数据总线收发器为数据总线收发器 74LS24574LS245 提供控制信号,当该信号为低电平时,提供控制信号,当该信号为低电平时,允许允许 CPUCPU 发送或接收一个数据。发送或接收一个数据。
DT/R :数据收发方向控制信号 ( 输出 )它和它和 DENDEN 结合对数据收发器控制。结合对数据收发器控制。
DT/R 为低电平时,数据接收,即 CPURAM 或 I/O.DT/R 为高电平时,数据发送,即 CPURAM 或 I/O.
READY :准备好信号(输入)
41
2. 与中断有关NMI :非屏蔽中断(输入)
NMINMI 信号时一个由低到高的上升沿。这类中断不受中断标志信号时一个由低到高的上升沿。这类中断不受中断标志 IFIF 的影响,的影响,也不能用软件屏蔽,每当也不能用软件屏蔽,每当 NMINMI 端进入一个正沿触发信号时,端进入一个正沿触发信号时, CPUCPU 就会就会在结束当前指令后,进入对应于中断类型号为在结束当前指令后,进入对应于中断类型号为 22 的非屏蔽中断处理程序。的非屏蔽中断处理程序。
INTR :可屏蔽中断请求(输入) :中断应答信号 ( 输
出 )
INTA
对外设的中断请求对外设的中断请求 INTRINTR 作出响应回答,当低电平有效时,表示作出响应回答,当低电平有效时,表示CPUCPU 允许外设的中断请求。允许外设的中断请求。
42
3. 与总线控制有关 HOLD :总线请求信号(输入)
其它部件(如其它部件(如 DMADMA 控制器)要占用系统总线时,通过此引脚控制器)要占用系统总线时,通过此引脚向向 CPUCPU 发出总线请求,该输入端高电平有效。发出总线请求,该输入端高电平有效。HLDA :总线响应信号(输出)
高电平有效,当高电平有效,当 CPUCPU 收到总线请求收到总线请求 HOLDHOLD 后,如后,如 CPUCPU 允许让允许让出总线,在当前总线周期完成时,于出总线,在当前总线周期完成时,于 T4T4 状态发出状态发出 HLDAHLDA 信号,信号,CPUCPU 让出总线控制权。让出总线控制权。当当 CPUCPU检测到检测到 HOLDHOLD 信号变成低电平后,则它使信号变成低电平后,则它使 HLDAHLDA变成变成低电平,同时又控制总线。低电平,同时又控制总线。
43
三 . 其它引脚
RESET :复位信号(输入)
高电平有效:高电平有效: 8086/80888086/8088 要求高电平至少维持要求高电平至少维持 44 个时钟周期。个时钟周期。
CLK :时钟信号引脚(输入)
时钟信号为时钟信号为 CPUCPU 和总线控制逻辑电路提供定时手段。和总线控制逻辑电路提供定时手段。
低电平有效,当低电平有效,当 CPUCPU检测到该信号为低时,等待状态结束,检测到该信号为低时,等待状态结束, CPUCPU继续往下执行被暂停的指令。继续往下执行被暂停的指令。
TEST :测试信号(输入)
GND 地和 VCC 电源引脚 :
MN/MX :最小 / 最大模式控制信号(输入)
44
“ 引脚”小结
CPU 引脚是系统总线的基本信号可以分成三类信号: 8 位数据线: D0~ D15
20 位地址线: A0~ A19
控制线: # BHE/S7 、 NMI 、 INTR 、# INTA 、 #WR 、 # RD 、 ALE 、 M /# IO 、 READY 、 HOLD 、
HLDA 、 #DEN 、 DT/#R 、 RESET 、 CLK 、 Vcc 、 GND 、
CPU 引脚是系统总线的基本信号可以分成三类信号: 8 位数据线: D0~ D15
20 位地址线: A0~ A19
控制线: # BHE/S7 、 NMI 、 INTR 、# INTA 、 #WR 、 # RD 、 ALE 、 M /# IO 、 READY 、 HOLD 、
HLDA 、 #DEN 、 DT/#R 、 RESET 、 CLK 、 Vcc 、 GND 、
有问题!有问题!
45
“ 引脚”提问提问之一:CPU 引脚是如何与外部连接的呢?
解答:总线形成
提问之一:CPU 引脚是如何与外部连接的呢?
解答:总线形成
提问之二:CPU 引脚是如何相互配合,实现总线操作、控制系统工作的呢? 解答:总线时序
提问之二:CPU 引脚是如何相互配合,实现总线操作、控制系统工作的呢? 解答:总线时序
46
2-4 8086 的系统配置
特点:系统中存储器芯片, I/O芯片不多; 地址总线由 AD0~AD15 , A16/ S3 ~A19/ S6 通过 8282锁存器构成; 数据总线直接由 AD0~AD15 构成(也可加总线驱动 8286 ); 控制总线由 CPU 的控制线提供,构成一小型、单处理机系统。
一、 最小模式系统( MN/ MX 引脚接 +5V 电源)
47
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
8088最小组态系统配置图
时钟
发生器
BHE
BHE
在最小模式系统中,还需加入:
1片 8284A
3片 8282/8283
2片 8286/ 8287
48
最小组态信号线(MN / MX=Vcc)引脚名称 功能 引脚号 类型
M / I O 存储器/ I O访问控制 28 输出,三态
WR 写选通信号 29 输出,三态
I NTA 中断响应 24 输出
ALE 地址锁存允许信号 25 输出
DT/ R 数据发送/ 接收 27 输出,三态
DEN 数据允许信号 26 输出,三态
HOLD 保持请求 31 输入
HLDA 保持响应 30 输出
BHE/S7高八位数据总线允许/
状态信号34 输出,三态
49
三、 8088 的引脚与 8086 的不同之处
* 8088 的指令队列长度为 4 个字节,队列中出现 1 个空闲字节时, BIU 自动访问存储器取指补充指令队列;
*8088 的地址 / 数据复用线为 8 条,即 AD7~AD0 ,访问 1
个字需两个读写周期;
* 8088 中的存储器 /IO 控制线为 IO /M ,与 8086 相反;
* 8086 的引脚 BHE/S7 在 8088 中为 SS0 ,与 DT/ R 、 IO/
M 一起决定最小模式中的总线周期操作。
50
2-5 8086CPU 时序一 . 指令周期、总线周期、时钟周期
指令周期( Instruction Cycle) : 执行一条指令所需要的时间。
(一个指令周期由一个或若干个总线周期组成)
总线周期( Bus Cycle ) : CPU 完成对存储器或 I/O 端口一次访问所需的时间;
时钟周期( Clock Cycle) :时钟频率的倒数 , 是 CPU 的时间基准( T 状态 ); (若 8086 的主频为 5MHZ ,一个时钟周期为200ns )
51
例 假设 ( DS )=3000H, (BX)=500CH, (3500CH)=9AH
执行 MOV AL, [ BX ]
指令 MOV AL, [BX]包含一个从存储器读操作
DSESSSCS
IP
数据暂存器
PSW 标志寄存器 执行部件控制电路
指令译码器
AXBXCXDX
AHBHCHDH
SIDIBPSP
ALBLCLDL
寄存器组
指令队列
总线接口控制电路
运算器
地址加法器
、、、指令 1
指令 2
指令 3
指令 4
、、、数据 1
数据 2
9Ah
、、、
地址总线 AB
数据总线 DB
控制总线 CB
地
址
译
码
器
52
1 、存储器读周期时序 执行 MOV AL, [ BX ]
1.M/IO 变高, CPU 将对内存进行操作 2. A19~A0 上出现地址信号 0011 0101 0000 0000 1100 A19 A15 A11 A7 A3 A0
3. ALE 上出现正脉冲信号 4. DT/R 变低, 数据收发器处于接受状态
T1 状态T1 T2 T3 T4
A19~A16/S6~S3
M/IO
AD15~AD0
ALE
RD
DT/R
DEN
CLK
S6 ~ S3
A15 ~ A0
A19~A16
D15 ~ D0
53
5.A19~A16 上出现状态信号 0 IF 1 1 S6 S5 S4 S3 使用 DS S6=0 ( 8086 与总线连) 6. AD15~AD0 变高阻态 7. RD 变低 发给内存 , CPU 将进行读
操作 8. DEN 变低 允许数据收发器进行数据传
送
T2 状态
( DS )=3000H, (BX)=500CH, (3500CH)=9AH
执行 MOV AL, [ BX ]
T1 T2 T3 T4
A19~A16/S6~S3
AD15~AD0
ALE
RD
DT/R
DEN
CLK
S6 ~ S3
A15 ~ A0
A19~A16
D15 ~ D0
M/IO
54
( DS )=3000H, (BX)=500CH, (3500CH)=9AH
执行 MOV AL, [ BX ]
T3 状态
9. AD15~AD0 上出现数据信号 1 0 0 1 1 0 1 0
AD7 AD0
数据由 3500CH 内存单元送出
T1 T2 T3 T4
A19~A16/S6~S3
M/IO
AD15~AD0
ALE
RD
DT/R
DEN
CLK
S6 ~ S3
A15 ~ A0
A19~A16
D15 ~ D0
55
( DS )=3000H, (BX)=500CH, (3500CH)=9AH
执行 MOV AL, [ BX ]
10. RD变高, CPU 从数据线上读数据 ,
将数据 9AH 读到 AL 中11. DEN变高, 数据收发器与总线断开, AD15~AD0 变高阻态
T4 状态
T1 T2 T3 T4
A19~A16/S6~S3
M/IO
AD15~AD0
ALE
RD
DT/R
DEN
CLK
S6 ~ S3
A15 ~A0
A19~A16
D15 ~ D0
56
2、存储器写周期时序
例:MOV [1000H], AL ;M/IO=1
T1 状态: A19—A0 上是地址信息,出现 ALE 信号后,将地址锁存到地址锁存器( 8282 )。
T2 状态:地址信息消失, A19-A16 从地址信息变为状态信息S6-S3 。
T3 状态: AD0~AD15 上出现数据。 WR 信号有效( WR=0 )。TW 状态:若存储器式外设的工作速度较慢,不能满足基本时序要求,
使用一个产生 READY 的电路,以使在 T3 状态之后,插入一个等待周期 TW 。
T4 状态, CPU认为数据已写入存储器,结束一个总线周期。
57
最小模式下总线写周期时序
CLK
T1 T2 T3 T4
A19~A16/S6~S3
M/IO
AD15~AD0
ALE
S6 ~ S3
A15 ~ A0 D15 ~ D0
低: I/O 高: M
A19~A16
WR
DEN
DT/R
BHE/S7 BHE S7S7
58
最小模式下的时序操作小结 一个基本总线周期由 T1~T4 组成; T1 状态: ALE 、 M/IO 、 DT/R 有效,分时复用线
上传送地址信息; 在写总线周期中, CPU 从 T2 开始把数据送到总线上
并维持至 T4 。 在读总线周期中, CPU 从 T3 到 T4期间读入总线上
的数据。 T3 状态:在 T3 的前沿检测 READY ,若有效,则
读操作出现输入数据;若 READY无效,持续其他各控制信号,加入若干个等待态 Tw ,并在每个 Tw前沿继续检测 READY ,直至 READY 有效为止; 在 T4 状态开始, CPU 对 DBUS采样,读入 DATA ,并使地址线、状态线清空,一些控制信号撤销,为启动下一总线周期做准备。