• 【微机原理笔记】第 2 章 - 微处理器与总线


    微机原理笔记 - 主页

    第 2 章 微处理器与总线

    1. 微处理器概述

    (1)程序的执行过程

    • CPU 的功能:取指令、翻译、取操作数、执行和保存结果。
      • 内存的重要性:执行操作的来源
      • 自动运行的核心:程序控制寄存器 IP
      • 总线的宽度:对计算机的速度有影响

    (2)微处理器(CPU)的基本组成:运算器、控制器和寄存器。

    (3)8066 和 8088 的区别

    • 8086 总线宽度为 16 位,8088 总线宽度为 8 位(数据总线)。

    2. 8088微处理器

    (1)8086 / 8088 CPU的内部结构 (考点)

    在这里插入图片描述

    • 执行单元 EU

      • 基本构成: 算数逻辑单元(ALU)、8 个通用寄存器、1 个标志寄存器和 EU 控制电路。
      • 功能:翻译、执行并临时保存结果。
    • 总线接口单元 BIU

      • 基本构成: 20 位的地址加法器、5 个专用寄存器、1 个指令队列和总线接口控制电路。
      • 功能:取指令、取操作数并保存结果。

      流水线的功能 (考点)

      【区别】8086 是 6 个字节,8088 是 4 个字节。

      1、两个以上字节空,自动启动取指令(取指令为 FIFO 即先进先出结构)。

      2、EU 不和外界打交道,只在指令队列取指令。

      3、预取指令队列(指令队列不是固定的),有跳转指令时会更新。

    (2)8086 CPU 的寄存器结构

    • 8086 CPU 内部有 14 个 16 位寄存器:通用寄存器(8)、段寄存器(4)和控制寄存器(2)。

      • 通用寄存器

        AXBXCXDX
        累加器基址寄存器计数器数据寄存器
        SIDISPBP
        源寄存器目的寄存器堆栈指针基址指针
      • 专用寄存器

        CSDSSSESIPFR
        代码段数据段堆栈段扩展段指令指针标志位寄存器
    • 标志寄存器 FR: 16 位只用其中 9 位,包括 6 个状态标志和 3 个控制标志。

    在这里插入图片描述

    状态标志位: CF 、PF 、AF 、ZF 、SF 、OF

    • OF: 溢出标志位。当算数运算超出带符号数的范围,即溢出时 OF = 1 ,否则 OF = 0 。
    • SF: 符号标志位。当运算结果的最高位为 1 时即负数。
    • ZF: 零标志位。当运算结果为零时 ZF = 1 ,否则 ZF = 0 。
    • AF: 辅助进位标志。在加(减)法操作中,如果 D3 向 D4 有进位(借位),则 AF = 1,否则 AF = 0。
    • PF: 奇偶标志位。当运算结果的低 8 位中 1 的个数为偶数时 PF = 1 ,为奇数时 PF = 0 。
    • CF: 进位标志。当进行加(减)运算时,若最高位向前有进(错)位,则 CF = 1 ,否则 CF = 0 。

    控制标志位: TF 、IF 、DF

    标志位记忆方法(一般不用 TF):

    奥(OF)迪(DF / IF)死(SF)砸(ZF)P(PF)C(CF)

    在这里插入图片描述

    一般考试会考 O S Z A P C 的状态:

    eg.

    在这里插入图片描述

    上面操作完后的标志位状态为:

    • OF(1): 带符号数的最高位由 0 变为 1 即从正变成负,所以溢出了。
    • SF(1): 运算结果最高位为 1 即负数。
    • ZA(0): 结果不为零。
    • AF(1): D3 到 D4 有进位情况。
    • PF(1): 低 8 位中 1 的个数为 4 即偶数。
    • CF(0): 最高位没有进位,如果是带符号数就有进位了。

    (3)改标志位

    CLI/STI: 改 IF

    CLD/STD: 改 DF

    CLC/STC: 改 CF

    3. 8088 系统的存储器

    (1)编码数

    位数81620
    码数256 (28)65536 (216)1024K (210 * 210 = 1M)

    (2)储存器的配置

    • 8086 / 8088 特点:1 M 内存 ,地址范围为 00000H - FFFFFH 。

    • 默认为高地址高字节,即小端模式

      大端法: 最高有效字节放在低地址。

      小端法: 最低有效字节放在低地址。

      字节顺序依赖于机器的类型,小端法一般用的较多,下列是一个十六进制值为 0x1234567 的例子:

    在这里插入图片描述

    • 地址总线 16 位,内存空间为 64 KB ;地址总线 20 位,内存空间为 220 个单元,即 1 MB 。

    地址段的首地址,最后一位为 0H 。

    段首址: 段的首地址,最后一位为 0H 。

    段基址: 段首址的最高 4 位 H 。

    段首址和段基址是等价的。

    逻辑地址 = 段基址 : 偏移地址

    物理地址(考点) = 段基址 × 16 + 段内偏移 = 段首址 + 偏移地址

    eg. 逻辑地址 3A00H : 12FBH 对应的物理地址是 3BFBH 。

    最小段为 16 B(例如 XXX10H 和 XXX20H 之间就相差了 16 B),**最大段 **为 64 KB ,并且段是可以重叠的,故逻辑地址不唯一。

    注意:

    (1)64 KB = 26 KB = 216 B(16 位有 16 个二进制数表示,其中最小为0000 0000 0000 0000,最大为1111 1111 1111 1111)

    (2)1 KB = 1024 字节也就是 Bytes(B) ,1 Byte = 8 bit

    (3)64 KB = 65536 比特

    (4)段寄存器的使用

    • 代码段(程序段)—— CS : IP
    • 数据段 —— DS : BX ,DI ,SI
    • 堆栈段 —— SS : SP ,BP

    eg. 若 CS = 8000H,则当前代码段可寻址的储存空间范围是 80000H ~ 8FFFFH 。

    因为段基址 8000H 转换成段首址要乘以 16 即十六进制左移 1 位,得到 80000H 。又因为最大段为 64 KB 即 216 B ,所以最大填满段首址的低 4 位即 8FFFFH 。

    8086/8088 的启动单元:0FFFF0H

    (5)堆栈 - 特殊储存区

    SP 初值指向栈底,向上生成。

    eg. 若已知 SS = 1000H ,SP = 2000H ,则堆栈的段首地址为 10000H ,栈顶地址(初值在栈底)为 12000H 。将数据 1234H 压入堆栈后,1234H 所在的内存单元的地址为 11FFEH

    专门指令操作:

    • PUSH: SP - 2

    • POP: SP + 2

      SP 始终指向栈顶

    对字操作: FIFO结构(先进后出)

    在这里插入图片描述

    4. 管脚和总线

    (1)8088 总线

    总线要包含片选信号,以及三态门装置。

    储存单元是用地址访问的。

    总线的分类

    • 地址总线: 20 条 —— 单向
    • 数据总线: 16 条(8086)、8 条(8088)—— 双向
    • 控制总线: #RD ,#WR ,IO/#M 至少 3 条(有些地方会写成等价的 4 条,#MEMR ,#MEMW ,#IOR ,#IOW)

    8086 和 8088 的区别总结 (考点)

    (1)数据总线 8086 是 16 条,8088 是 8 条。

    (2)流水线 8086 是 6 个字节,8088 是 4 个字节。

    (3)8086 的 IO 高低电平相反,IO 是低电平,高电平是 M 即 #IO/M 。而 8088 是 IO/#M 。

    (2)8088 的管脚功能

    8088 的管脚解复用技术:

    • 第一周期: ALE 下降沿所存地址信号形成稳定的地址总线。
    • 第二周期: #DEN,DT/#R 控制形成稳定的数据总线。

    主要控制状态线:

    • IO/#M: 输出。指出当前访问存储器还是访问I/O。注意8086是M/#IO。
    • #WR: 输出。写命令信号。
    • #RD: 输出。读命令信号。
    • ALE: 输出。高电平表示AB地址有效;此信号在T1状态有效。
    • #DEN: 输出。低电平时表示DB上的数据有效。
    • DT/#R: 输出。数据传送方向。
    • READY : 输入。准备就绪信号。由外部输入;用于解决CPU与慢速存储器或I/O电路的同步问题

    (3)最小系统

    在最小系统中,还需加入:

    • 8284(时钟发生器): 1 片
    • 8282(地址的锁存器): 3 片
    • 8286(数据的缓冲器即收发器): 1 片(8088)/ 2 片(8086)

    5. 8086/8088 CPU 工作时序

    (1)基本概念

    • 时钟周期: 若 8086/8088 的主频为 5 MHZ ,一个时钟周期为200 ns 。
    • 总线周期(机器周期): CPU 完成对储存器或 I/O 一次访问所需的时间。
    • 指令周期: 执行一条指令需要的时间。
    • 空闲周期(Ti): 微处理器 BIU 空闲时,总线上插入的时间。
    • 等待周期(Tw): 总线周期内,储存器或 I/O 没有准备好数据时插入的时间。

    (2)基本时序

    典型的总线周期:一个总线周期一般由四个 T 组成。T1 :输出地址,T2 及 T3:传送数据。

    指令周期大概在两个微秒:10 * 200 ns = 2 us

    在这里插入图片描述

    • 存储器读时序

      • 第 1 周期: ALE 下降沿锁存地址。
      • 第 2 周期: #DEN ,#RD 有效。
      • 第 3 周期: 检测 ready 信号是否有效,若发现其为低,则在T3周期结束后,插入一个 Tw(等待周期) 状态。以后在每个 Tw 周期的前沿采样 READY 线,只有在发现它为高电平时,才在这个 Tw 结束后进入T4周期。
      • 第 4 周期: #DEN ,#RD 无效。
    • 存储器写时序

      其写时序与读时序的区别是,写时序没有 ready 即没有等待周期,数据发出快。

  • 相关阅读:
    详解字符串格式化输出
    Linux 忘记密码解决方法
    产品经理基础--02需求收集&需求管理
    代码随想录(番外)图论3|1020. 飞地的数量|130. 被围绕的区域
    详解Docker的网络模式之host模式(host网络模式)
    Spring注解驱动之@Resource注解和@Inject注解
    力扣(LeetCode)30. 串联所有单词的子串(C++)
    基于vue的学生租房及自习室预约管理系统
    我摊牌了!真正的灰度队列实现方案!全网你都搜不到!
    Java 面试常遇到的3道题,你知道答案吗?
  • 原文地址:https://blog.csdn.net/Newin2020/article/details/125457373