microcomputer_principle_03_总线与指令
Carpe Tu Black Whistle

总线

总线时序

  • CPU工作时序:
    • CPU各引脚信号在时间上的关系
  • 总线周期:
    • CPU完成一次访问内存(或接口)操作所需要的时间。
    • 一个总线周期至少包括4个时钟周期。

总线概念

总线: 一组导线和相关的控制、驱动电路的集合。是计算机系统各部件之间传输地址、数据和控制信息的通道。


从传送信息的角度看,分为三种类型:

  • 地址总线(AB
  • 数据总线(DB
  • 控制总线(CB

层级结构分类

  • CPU总线
  • 系统总线
  • 外部总线

总线结构

单总线结构

single bus

多总线结构

multi-bus

面向CPU的双总线结构

存储器与I/O接口间无直接通道

single-bus

当部分高速外部设备,需要与内存直接进行数据交换的时候,无路可走
也意味着,所有接口与内存的交互都需要通过cpu

面向存储器的双总线结构

在单总线结构基础上,增加一条CPU到存储器的高速总线

double-bus

这也是,现代微机中的多总线结构的前期阶段

总线的基本功能

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

总线评价指标

  • 总线带宽(B/S)
    • 单位时间内总线上可传送的数据量
    • 总线带宽=位宽工作频率
  • 总线位宽(bit)
    • 能同时传输的数据位数
  • 总线的工作频率(MHz)
    • 总线带宽 = (位宽/8)(工作频率/每个存取周期的时钟数)

指令与指令系系统

指令: 控制计算机完成某种操作的命令

指令系统: 处理器所能识别的所有指令的集合

指令的兼容性:同一系列机的指令都是兼容的


一条指令应包含的信息:

  • 运算数据的来源
  • 运算结果的取向
  • 执行的操作

指令格式

操作码 【操作数】,【操作数】

(方括号指可有可无

instruct format

操作完成后,数据会被放在目标操作数位置。

寻址方式

这一讲非常重要

  • 操作数可能的来源或运算结果可能的去处;
    • 由指令直接给出
    • 寄存器
    • 内存单元
  • 寻找操作数所在地址的方法可以有三种大类型
    • 指令直接给出的方式
    • 存放于寄存器中的寻址方式
    • 存放于存储器中的寻址方式 (最复杂一类

立即寻址

运算对象由指令直接给出(立即寻址)

  • 由指令直接给出运算的数据(操作数是立即数)。为常数形式或字符形式。
  • 立即数只表示运算的数据,无地址含义。

立即寻址仅适合于源操作数。源操作数是参加操作的数据本身

例: MOV AX, 1200H

寄存器寻址

参加操作的操作数在CPU的通用寄存器中。

  • MOV AX, BX

image

此种寻址方式中的寄存器主要是通用寄存器
不含控制寄存器,段寄存器限制使用

寄存器间接寻址

存储器操作数的寻址方式

  • 关注点:
    • 指令操作的对象在内存中,表现形式为:
      • [ ]
    • 指令中给出运算对象在内存某个逻辑段中的偏移地址
      • [偏移地址]
    • 逻辑段的段基地址通过默认或重设方式给出。

存储器操作数的子长本身不确定,取子长取决于指令中另一个寄存器操作数,或通过其他方式制定字长。


直接寻址

这是第一种有关,存储器操作数的寻址方式。

  • 指令中,直接给出操作数的偏移地址
    • 例: MOV AX, [1200H]
  • 直接寻址方式下,操作数默认认为在数据段,但允许段重设,即由指令给出所在逻辑段。
    • 例: MOV AX, ES:[1200H]

间接寻址

  • 操作数存放在内存中,数据在内存中的偏移地址为方括号中通用寄存器的内容。
  • 仅有4个通用寄存器可用于存放数据的偏移地址
    • 能够存放间接地址的寄存器仅有4个,间址寄存器(BX,BP,SI,DI)
  • 间接寻址的一般格式:
    • [间址寄存器]

  • 由寄存器间接给出操作数的偏移地址;
  • 存放偏移地址的寄存器成为间址寄存器(BX,BP,SI,DI)
  • 操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器:
    BX,SI,DI—-> 默认在数据段
    BP —-> 默认在堆栈段

可以通过段重设段方法,重设在其他段。

相对寻址

  • 操作数的偏移地址为寄存器的内容加上一个位移量。
    • 如: MOV AX, [BX+DATA]
    • 例:
      • MOV AX, 2000H
      • MOV DS, AX
      • MOV BX, 1200H
      • MOV AL, [BX]5

上指令中的[BX]5等效于[BX+5]
相对寻址的引入,主要用于一维数据组的操作

基址、变址寻址

基址寄存器只有两个BX,BP
变址寄存器只有两个SI,DI

  • 操作数的偏移地址位
    • 一个基址寄存器的内容 + 一个变址寄存器的内容;
  • 操作数的段地址由选择的基址寄存器决定
    • 基址寄存器为BX,默认在数据段
    • 基址寄存器为BP,默认在堆栈段
  • 基址变址寻址方式于相对寻址一样,主要用于一维数组操作。

基址、变址、相对寻址

  • 操作数的偏移地址

    • 基址寄存器内容+变址寄存器内容+位移量
  • 操作数的段地址由,选择的基址寄存器决定。

  • 基址变址相对寻址方式主要用于二维表格操作。

  • 例子程序段:

    • MOV DI, 1100H
    • MOV BP, DI
    • MOV AL, [BP][DI]5

基址寄存器选择BP,表示操作数在堆栈段

隐含寻址

  • 指令中隐含了一个或两个操作数的地址,即操作数在默认地址中
  • 例子:
    • MUL BL
  • 执行指令:
    • ALBL —-> AX

寻址小结:

summary