8086/8088微型计算机的处理器和存储器有什么特点 ?
他们和模型及有什么区别 ?
2. 8086/8088 微处理器和存储器
2.1 8086/8088 CPU特点及工作模式
2.1.1 8088/8086 CPU的特点
Ⅰ CPU内部结构
采用并行流水线工作方式
- 将CPU划分成两个功能部分并设置指令预取队列,实现流水线工作
Ⅱ 存储器寻址方式
对内存空间实行分段管理
- 将内存分为4个段并设置段地址寄存器,以实现对1MB空间的寻址
Ⅲ 工作模式
支持多处理器系统
8088CPU的两种工作模式
① 最小模式
-
特点
单处理器模式,控制信号较少,一般可不必接总线控制器 -
示意图
② 最大模式
-
特点
多处理器模式,控制信号较多,须通过总线控制器与总线相连 -
示意图
③ 两种工作模式的选择
M N / M X ‾ MN/\overline{MX} MN/MX引线状态 控制工作模式选择
M N / M X ‾ = 0 MN/\overline{MX} = 0 MN/MX=0 最大模式
M N / M X ‾ = 1 MN/\overline{MX} = 1 MN/MX=1 最小模式
2.2 8086/8088 CPU主要引脚功能和内部结构
2.2.1 主要引线
Ⅰ 最小模式下的8088引线
地址线和数据线
- AD0 - AD7
- 低8位地址和低8位数据信号分时复用
- 在传送地址信号时为单向
- 传送数据信号时为双向
- 低8位地址和低8位数据信号分时复用
- A8 - A15
- 8位地址信号
- A16 - A19 / S3 - S6
- 高4位地址信号,与状态信号分时复用
Ⅱ 主要的控制和状态信号
-
W R ‾ \overline{WR} WR
-
含义 : 写信号
-
信号 : 低电平
-
-
R D ‾ \overline{RD} RD
-
含义 : 读信号
-
信号 : 低电平
-
-
I O / M ‾ IO/\overline{M} IO/M
-
含义 : 访问内存还是接口
-
信号 :
0 ⟶ \longrightarrow ⟶ 访问内存
1 ⟶ \longrightarrow ⟶ 访问接口
-
-
D E N ‾ \overline{DEN} DEN
-
含义 : 数据允许信号
-
信号 :
低电平有效时,数据总线上数据有效,允许进行读/写操作
-
-
D T / R ‾ DT/\overline{R} DT/R
-
含义 : 数据收发器的传送方向控制信号
-
信号 :
1 ⟶ \longrightarrow ⟶ CPU向存储器或I/O传送数据
0 ⟶ \longrightarrow ⟶ CPU从存储器或I/O接收数据
-
-
A L E ALE ALE
-
含义 : 地址锁存信号
-
信号 :
高电平时表示地址线上地址有效。
一般用它将地址( A0A19~ )锁存到地址锁存器中
-
-
R E S E T RESET RESET
-
含义 : 系统复位输入信号
-
信号 :
当其为高时将完成CPU内部复位。
改信号至少要在4个时钟周期内保持有效
复位后CPU内部寄存器
举例 :
-
Ⅲ READY
-
含义 : 外部同步控制输入信号
-
信号 :
表示 被访问的内存或I/O设备所发出的响应信号
高电平有效 M/IO准备好了 , CPU可以进行数据传送
8088CPU与内存/外设之间在一个总线周期内的时钟配合信号
CPU在 T 3 T_3 T3 周期采样READY信号 , 若其为低 , CPU 自动插入等待周期 T w T_w Tw 直到READY变为高电平后才脱离等待状态 , 完成数据传送过程 .
Ⅳ 中断信号和响应信号
-
INTR (INTerrupt Request) 可屏蔽中断请求输入信号
CPU每条指令的最后一个周期采样该信号 , 决定是否进入响应周期 ,
可以通过软件屏蔽
-
NMI (Non Maskable Interrupt) 非屏蔽中断请求输入信号
不能被软件屏蔽的中断请求信号
CPU在当前指令执行结束后就进入中断过程
-
I N T A ‾ \overline{INTA} INTA (INTerrupt Acknowledgement) 中断响应信号
CPU对中断请求信号INTR的响应 .
在响应过程中 , CPU 在 I N T A ‾ \overline{INTA} INTA 引脚上连续输出两个负脉冲用作在不中断源的中断向量码和读选通信号
Ⅴ 总线保持信号
-
HOLD 总线保持请求信号输入端
当CPU以外的其他设备要求占用总线时,通过该引脚向CPU发出请求
-
HLDA 总线保持响应信号输出端
CPU对HOLD信号的响应信号
8088和8086CPU的引线差异
- 访问存储器和I/O控制的信号含义不同
- 8088——IO/M=0表示访问内存 ⟹ \Longrightarrow ⟹ I O / M ‾ IO/\overline{M} IO/M
- 8086——IO/M=1表示访问内存 ⟹ \Longrightarrow ⟹ I O ‾ / M \overline{IO}/M IO/M
- 数据总线宽度不同
- 8088的外部总线宽度 ⟹ \Longrightarrow ⟹ 8位
- 8086的外部总线宽度 ⟹ \Longrightarrow ⟹ 16位
2.2.2 8088/8086CPU内部结构概述
结构图
Ⅰ 执行单元 EU
① 组成 :
- 运算器(算数逻辑单元)ALU
- 8个通用寄存器
- 1个标志寄存器
- EU控制电路
② 功能 ---- 指令的执行
- 指令译码
- 指令执行 ⟶ \longrightarrow ⟶ 在ALU中完成
- 暂存中间运算结果 ⟶ \longrightarrow ⟶ 在通用寄存器中
- 保存运算结果特征 ⟶ \longrightarrow ⟶ 在标志寄存器FLAGS中
Ⅱ 总线接口单元
① 组成
- 段寄存器
- 指令指针寄存器
- 指令队列
- 地址加法器
- 总线控制逻辑组成
② 功能
- 从内存中取指令到指令队列
- 指令队列是并行流水线工作的基础
- 负责与内存或I/O接口之间的数据传送
- 在执行转移程序时,BIU清除指令队列,从指定的新地址取指令,并立即传给执行单元执行。
8086/8088CPU结构特点
- 指令队列的存在使EU和BIU两个部分可并行工作,即:
- 实现指令的并行执行
- 目的 :
- 提高了CPU的效率
- 降低了对存储器存取速度的要求
2.3 8086/8088CPU内部寄存器
内部寄存器的类型, 含14个16位寄存器,按功能可分为三类
- 8个通用寄存器
- 4个段寄存器
- 2个控制寄存器
对于每个寄存器都要了解清楚
2.3.1 通用寄存器(8)
Ⅰ 数据寄存器 (AX,BX,CX,DX)
① 结构特点
8088/8086含4个16位数据寄存器
每一个又可拆分为2个8位寄存器
AX
⇒
\Rightarrow
⇒ AH , AL
BX
⇒
\Rightarrow
⇒ BH , BL
CX
⇒
\Rightarrow
⇒ CH , CL
DX
⇒
\Rightarrow
⇒ DH , DL
② 组成和功能
数据寄存器有特定的固有用法
-
AX(Accumulator) : 累加器
- 所有I/O指令都通过AX与接口传送信息
- 中间运算结果也多放于AX中
-
BX(Base) : 基址寄存器
- 在间接寻址中用于存放基地址
-
CX(Count) : 计数寄存器
- 用于在循环或串操作指令中存放计数值
-
DX(Data) : 数据寄存器
- 在间接寻址的I/O指令中存放I/O端口地址
在32位乘除法运算时,AX与DX 合起来存放一个双字长数 , DX存放高16位数 , AX存放低16位数
Ⅱ 地址指针寄存器(SP,BP)
组成和功能
- SP(Stack Pointer) : 堆栈指针寄存器
- 永远指向栈顶的偏移地址
- BP(Base Pointer) : 基质指针寄存器
- 常用于在访问内存时存放内存单元的偏移地址/基地址
- BP与BX异同 :
- 相同 作为通用寄存器
- 二者均可用于存放数据
- 不同 作为基址寄存器
- BP 常与 SS 寄存器配对使用 , 表示数据在堆栈段
- BX 常与 DS 寄存器配对使用 , 表示数据在数据段
- 相同 作为通用寄存器
Ⅲ 变址寄存器(SI,DI)
组成和功能
- SI(Source Index) : 源变址寄存器
- DI(Destination Index) : 目的变址寄存器
变址寄存器在指令中常用于存放数据在内存中的地址
常作为变址寻址方式中作为索引指针
2.3.2 控制寄存器(2)
Ⅰ IP
IP(Instruction Pointer) : 指令指针寄存器
用于存放预取指令的偏移地址
CPU取指令的时候总以CS为段基址 , IP 为段内偏移地址
每次取后IP自动加一
用户程序不能直接访问IP
Ⅱ FLAG
标志寄存器 / 程序状态字(PSW)
16位寄存器,但只使用其中的9位,其中6个状态标志,3个控制标志
① 状态标志位
记录算术和逻辑运算结果的一些特征
-
CF(Carry Flag) : 进位标志位
- 加(减)法运算时 , 若最高位有进(借)位时 CF=1
-
PF(Parity Flag) : 奇偶标志位
- 运算结果的低8位中“1”的个数为偶数时 PF=1
-
AF(Auxiliary Carry Flag) : 辅助进位标志位
-
加(减)操作中 , 若Bit3向Bit4有进位(借位) AF=1
结合组合进位链理解
-
-
ZF(Zero Flag) : 零标志位
- 当运算结果为零时 ZF=1
-
SF(Sign Flag) : 符号标志位
- 当运算结果的最高位为1时,SF=l
-
OF(Overflow Flag) : 溢出标志位
- 当算术运算的结果超出了有符号数的可表达范围时,OF=l
② 控制标志位
- TF(Trap Flag) : 陷井标志位/跟踪标志位
- TF=1 使CPU处于单步执行指令的工作方式
- 激活处理器的调试特性 , 每执行一条指令后, 自动产生一次单步中断 , 从而使用户能逐条指令检查程序
- IF(Interrupt Enable Flag) : 中断允许标志位
- IF=1 使CPU可以响应可屏蔽中断请求
- IF 对不可屏蔽中断及内部中断没有影响
- DF(Direction Flag) : 方向标志位
- 在数据串操作时确定操作的方向
- DF = 1 按减地址方式进行 , 即从高地址开始每执行一次操作地址指针自动减1 (或减2) , DF=0则按增地址方式进行
2.3.4 段寄存器(4)
组成和作用
① 作用
段寄存器用于存放相应逻辑段的段基地址
- 8086/8088CPU在使用存储器时,将它划分成若干个逻辑段
- 每个逻辑段用来存放不同目的内容,如程序代码、数据等等
- 每个逻辑段用一个段寄存器来指明该段的起始位置(也叫段基址)
② 组成
最多为64K个
程序中同时可以使用4个段分别由CS、DS、ES和SS四个段寄存器指示
Ⅰ 代码段 CS(Code Segment)
代码段寄存器,存放代码段的段基地址
Ⅱ 数据段 DS(Data Segment)
数据段寄存器,存放数据段的段基地址
Ⅲ 附加段 ES(Extra Segment)
附加段寄存器,存放数据段的段基地址
Ⅳ 堆栈段 SS(Stack Segemnt)
堆栈段寄存器,存放堆栈段的段基地址
2.4 8086/8088 存储器组织和实地址模式下的存储器寻址
2.4.1 内存单元的编制
内存单元的地址表示有物理地址和逻辑地址两种方式
Ⅰ 物理地址
指每个内存单元在整个内存空间中具有的惟一的地址
① 微机系统的物理地址
-
微机系统中 : 8086/8088CPU有20根地址线,它可以产生20位的地址码,寻址范围为220,即1兆字节空间 , 这一兆字节存储单元的地址范围为:00……0~11……1。
-
表示形式 :
20位二进制 / 5位16进制
00000000000000000000 / 00000H
② 按字编址的内存单元
规则 :
-
任何两个相邻字节单元就构成一个字单元
-
字单元的地址为两个字节单元中较小地址字节单元的地址
-
字数据的存放规则是低8位放在较低地址字节单元,高8位放在较高地址字节单元
( 常常在示例图中将低位写在上面 )
Ⅱ 逻辑地址
① 组成
每个存储单元的逻辑地址由两部分组成 :
- 段(基)地址
- 16位
- 决定该逻辑段在内存中的位置
- 段内地址/相对地址/偏移地址
- 16位
- 决定该存储单元相对段起始单元的距离
- 段首地址 : 段首的物理地址
- 段基地址
- 偏移地址 = 0
② 划分效果和目的
将内存划分成多个逻辑段后,就可以使用逻辑地址来指示存储单元
使用逻辑地址方便了程序的开发和对存储器进行动态管理
8086/8088存储器段结构的特点
① 每个段最大长度为64K(65536)个字节单元组成
- 因为数据线只有20根
② 每个段的起始地址(段首)必须是一个小节的首址
-
从0地址开始,每16个字节单元称为一个小节(Paragraph)1MB内存就可划分为64K个小节
-
图示 :
-
原因 : 每个小节的首地址最低位必为0(16进制数表示)因此段首只能是上述64K个小节首址之一
③ 逻辑段在物理存储器中可以是邻接的、间隔的、部分重叠的和完全重叠的等4种情况
-
图示:
-
内存中的一个物理存储单元可以映象到多个逻辑段中,可以有多个逻辑地址表示
- 例如 : DA_BYTE物理单元可以映象到逻辑段2、段3和段4中
④ 在任一时刻,一个程序只能访问4个当前段中的内容
四个当前段 :
代码段: CS提供当前段的段基地址
数据段: DS提供当前段的段基地址
堆栈段: SS提供当前段的段基地址
附加段: ES提供当前段的段基地址
例子 :
2.4.2 逻辑地址和物理地址转换 (重点)
内存物理地址由段基地址和偏移地址组合而成
- 物理地址=段基地址×16+偏移地址
- 体现在地址上就是将段基地址向前移动一位再加上偏移地址
例1
设某操作数存放在数据段,DS=250AH,数据所在单元的偏移地址=0204H。则该操作数所在单元的物理地址为
解 : 250AH ×16+0204H = 252A4H
例2
解 :
例3 :
2.4.3 堆栈及堆栈段的使用
Ⅰ 堆栈的定义
- 堆栈是一个特定的存储区,访问该存储区一般需要按照专门的规则进行操作
- 主要用于暂存数据以及在过程调用或处理中断时保存断点信息
- 堆栈一般分为专用堆栈存储器和软件堆栈
Ⅱ 堆栈的实现
- 专用堆栈存储器
- 按堆栈的工作方式专门设计的存储器
- 软件堆栈
- 由程序设计人员用软件在内存中划出的一块存储区作为堆栈来使用
- 8086/8088采用这种方式
Ⅲ 堆栈的结构特征
- 栈底
- 堆栈的一端是固定的,称为栈底
- 栈底是堆栈存储区的最大地址单元
- 栈顶
- 堆栈的另一端是浮动的,称为栈顶
- 任何时候,栈顶是最后存入信息的存储单元。栈顶随着堆栈中存放信息的多少而改变。
Ⅳ 堆栈指针SP
为了指示堆栈中栈顶的位置,设置一个寄存器来指示其位置。其内容就象一个指针一样
特点 :
- SP的内容始终指向栈顶单元
- 堆栈中数据的进出都由SP来控制
Ⅴ 堆栈的使用
① 在堆栈中存取数据的规则:
“先进后出FILO”(First-In Last-Out)
即最先送入堆栈的数据要到最后才能取出,而最后送入堆栈的数据,最先取出
② 8086/8088堆栈的组织
在8086/8088微机中堆栈是由堆栈段寄存器SS指示的一段存储区
注意 : 栈顶的物理地址比栈底的小 !
③ 堆栈段的使用
- 数据在堆栈中以字为单位存放,低8位放在较低地址单元,高8位放在较高地址单元
- 堆栈初始化时SP指向栈底+2单元,其值就是堆栈的长度。由于SP是16位寄存器,因此堆栈长度 64K字节
- SP始终表示堆栈段基址与栈顶之间的距离(字节数)
- 当SP为最大(初始)值时,表示堆栈为空
- 当SP为0时,表示堆栈全满。
- 当用户程序中要求的堆栈长度超过一个堆栈段的最大长度64KB时,可以设置多个堆栈段
- 示例 :
2.3 8088总线时序
2.3.1 总线的基本概念
Ⅰ 定义 :
总线是一组导线和相关的控制、驱动电路的集合,是计算机系统各部件之间传输地址、数据和控制信息的通道
分时共享
Ⅱ 组成
地址总线 , 数据总线 , 控制总线
2.3.2 最小总线模式
2.3.3 最大总线模式
2.3.4 最小模式总线时序
Ⅰ 概念:
① 时序
- CPU各引脚信号在时间上的关系
② 总线周期
-
CPU完成一次访问内存(或接口)操作所需要的时间
-
一个总线周期至少包括4个时钟周期
-
三个 “周期” 概念区分
- 时钟周期
- 响铃两个时钟脉冲上升(或下降)沿之间的时间间隔。CPU所有的操作都以它为准。(通常是计算机主频的倒数)
- 指令周期
- 执行一条指令的时间。不同指令的执行时间是不同的,不同指令的长短也是不同的。
- 总线周期
- CPU完成一次访问内存(或接口)操作所需要的时间。
关系 :
- 时钟周期
Ⅱ 总线周期 示例
① 典型的总线周期
进行一次总线操作(访存或访I/O)需4个时钟周期T
② 8088最小模式下的读周期
③ 8088最小模式下的写周期
小结
- 微处理器的一般构成
- 8088CPU的主要引线及其功能
- 8088CPU的内部结构
- 内部寄存器功能
- 寄存器中数据的含义
- 8位寄存器中存放的均为运算的数据
- 存储器组织
- 逻辑地址,段基地址,偏移地址,物理地址
- 堆栈
- 栈顶地址,栈底地址,堆栈段基地址
- 系统总线
- 最小模式和最大模式的总线,总线时序