微处理器和总线(二)


微处理器和总线(二)

8088/8086微处理器

8088和8086微处理器内部都是16位的体系结构,8086对外的通道是16位。8088对外是8位。

特点

  • 采用并行流水线工作方式
    • 设置指令预取队列实现
  • 对内存空间实行分段管理
  • 支持协处理器
    • 协处理器主要用作浮点运算

工作模式

8088/8086可工作于两种工作模式下:
最小模式:最小模式为单处理器模式,所有控制信号由微处理器产生。
最大模式:最大模式为多处理器模式,加入了协处理器,部分的控制信号由协处理器(总线控制器)产生。
8088的工作模式由MN/$\overline{\text{MX}}$引线状态决定

  • MN/$\overline{\text{MX}}$-0,工作于最大模式
  • MN/$\overline{\text{MX}}$-1,工作于最小模式

8088CPU主要引线

8088CPU最小模式下的主要引脚信号

  • 地址线和数据线
    • AD0-AD7:低8位地址和低8位数据信号分时复用,先传地址后传数据,在传送地址信号时为单向,传送数据信号时为双向
    • A16-A19:高4位地址信号,与状态信号分时复用
    • A8-A15:8位地址信号
  • 主要控制信号
    • #WR 写信号
    • #RD 读信号
    • IO/#M 为“0”表示访问内存,为“1”表示访问接口(8086相反)
    • #DEM 低电平有效时,允许进行读/写操作
    • DT/#R 数据收发器的传送方向控制
    • ALE 地址锁存信号
    • RESET 复位信号
  • 中断请求和响应信号
    • INTR 可屏蔽中断请求输入端
    • NMI 非屏蔽中断请求输入端
    • $\overline{\text{INTA}}$ 中断响应输出端
  • 总线保持信号
    • HOLD 总线保持请求信号输入端
    • HLDA 总线保持响应信号输出端

8088CPU内部结构

8088CPU从功能上分成了执行单元(EU)**和总线接口单元(BIU)两部分。
**执行单元(EU)
:就是用来执行程序的。
**总线接口单元(BIU)**:就是用于访问内存和接口的。

执行单元(EU)构成

  • 运算器
  • 8个通用寄存器
  • 1个标志寄存器
  • EU部分控制电路

总线接口单元(BIU)构成

  • 4个段寄存器和指令指针IP
  • 地址加法器
  • 指令队列
  • 总线接口控制逻辑

8088CPU 内部寄存器

有14个16位寄存器

  1. 8个通用寄存器
  2. 4个段寄存器
  3. 2个控制寄存器

通用寄存器

  1. 数据寄存器(AX,BX,CX,DX)
  2. 地址指针寄存器(SP,BP)
  3. 变址寄存器(SI,DI)
数据寄存器

AX,BX,CX,DX这四个数据寄存器都是由两个8位寄存器构成的。
所以它们合起来可以是一个16位寄存器,拆开来可以是2个独立的8位寄存器。
AX可以拆为AH,AL
BX可以拆为BH,BL
CX可以拆为CH,CL
DX可以拆为DH,DL

地址指针寄存器

SP:堆栈指针寄存器,内容为栈顶的偏移地址。
BP:基址指针寄存器,可以指向堆栈里边的任何一个区域。

变址寄存器

SI:源变址寄存器
DI:目标变址寄存器

控制寄存器

IP:指令指针寄存器,其内容为下一条要取的指令的偏移地址。
FLAGS:标志寄存器,存放运算结果的特征。

  • 6个状态标志位(CF,SF,AF,PF,OF,ZF)
  • 3个控制标志位(IP,TF,DF)
状态标志位

CF:进位标志位,两个无符号数加(减)运算时,若最高位有进(借)位时,CF=1
OF:溢出标志位,两个有符号数运算时,次高位和最高位的进(借)位状态不一样时,OF=1
ZF:零标志位,运算结果为0时,ZF=1
SF:符号标志位,当运算结果的最高位为1时,SF=1
:以上4位标志位,对8位16位都有意义,以下俩个,仅对8位有效。
PF:奇偶标志位,运算结果的低8位中“1”的个数为偶数时,PF=1
AF:第三位向第四位有进位或有借位时,AF=1

控制标志位

TF:陷井标志位,也成为跟踪标志位,TF=1时,使CPU处于单步执行指令的工作方式。
IF:中断允许标志位,IF=1使CPU可以响应可屏蔽中断请求。
DF:方向标志位,在数据串操作时确定操作的方向。

段寄存器

用于存放相应逻辑段的段基地址。
打个比方,一个大楼中的楼层号就相当于段基地址。
CS:代码段寄存器,存放代码段的段基地址
DS:数据段寄存器,存放数据段的段基地址
ES:附加段寄存器,存放数据段的段基地址
SS:堆栈段寄存器,存放堆栈段的段基地址
段寄存器的值决定了逻辑段在内存中的位置

堆栈及堆栈段的使用

堆栈:用于存放暂时不用或需要保护的数据,常用于响应中断或子程序调用
若栈顶等于栈底,表示现在是空栈
若栈顶等于栈首,表示现在是满栈

实模式下存储器寻址

内存单元的编制

内存每个单元的地址在逻辑上都由两部分组成:

  • 段(基)地址
    • 存储单元在内存中的位置
  • 段内地址(相对地址/偏移地址)
    • 该存储单元相对段内第一个单元的距离
  • 逻辑段的起始地址称为段首,即每个逻辑段内的第一个单元
    • 段首的偏移地址为0
  • 内存物理地址由段基地址和偏移地址组成
    • 物理地址=段基地址*16+偏移地址

8088为16位结构,所以段地址和偏移地址均为16位

逻辑段和逻辑地址

内存的分段是逻辑分段,不是物理段。
每个内存单元的物理地址都是唯一的,但可能具有多个逻辑地址。

  • 一个内存单元可以同时处于两个逻辑段
  • 一个内存单元可以在不同的时刻属于想相同或不同的类型的段
  • 一个内存单元在同一时刻可以属于不同类型的段

8088系统总线

总线是计算机各种功能部件之间传送信息的通道,如果说信息是物资,那总线就是传送物资的通道。
从传送信息的角度可以分为三类:

  1. 地址总线(AB)
  2. 数据总线(DB)
  3. 控制总线(CB)

按层次结构分类

  1. CPU总线
  2. 系统总线
  3. 外部总线

总线的基本功能

  • 数据传送
  • 仲裁控制
  • 出错处理
  • 总线驱动

Author: ljs
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source ljs !
评论
  TOC