计算机硬件基础——第五章:指令系统(一)

文章目录

    • 指令系统设计
      • 指令格式
      • 指令类型
      • 寻址方式
      • 数据形式

指令系统设计

指令格式

  • 表示一条指令的二进制代码形式

  • 操作码:规定了操作的类型

    • 定长操作码

      • 所有指令的操作码长度相同

      • 特点

        • 编码方式简单,
        • 简化硬件设计
        • 减少指令的译码事件
        • n位操作码只有2^n种不同指令,不便新增
    • 变长操作码

      • 指令的操作码位数不相同

      • 特点

        • 可压缩操作码的平均长度
        • 可通过增加操作码的长度新增指令
        • 控制器的设计相对复杂
        • 指令的译码时间也较长
  • 地址码:规定了操作的数据所存放的地址

    • 零地址指令

      • 特点:只有操作码,而无操作数

      • 例如

        • 不需要操作数

          • 空操作指令 NOP、停机指令 HLT
        • 操作数隐含

          • 串传送指令MOVSB
    • 一地址指令

      • 特点:只有一个操作数

      • 例如

        • 只有一个操作数:既是源操作数又是目的操作数

          • 增量指令 INC BX
        • 操作数隐含

          • 乘法指令 MUL BX
    • 二地址指令

      • 特点:有两个操作数,是常用格式

      • 例如

        • MOV AX,BX
    • 三地址指令

      • 特点:有三个操作数

        • 指令吗较长
        • 既耗费存储空间
        • 又增加取指令的时间
    • 多地址指令

      • 特点

        • 有三个以上的操作数
        • 指令码长
        • 在某些性能好的大中型机中采用
  • 指令字长

    • 由操作码和地址码两部分组成的一串二进制数码的位数
    • 可以是固定的,也可以是变长的
    • 指令字长应于计算机的字长相匹配,一般是整数倍
    • 指令字长等于机器字长的指令称为单字长指令,一次读取即可

指令类型

寻址方式

  • 寻址就是通过地址访问指令和数据

  • 指令寻址

    • 顺序寻址

      • 遵循冯诺依曼设计思想,顺序执行。
      • PC自动增量指向下一条指令
    • 跳转寻址:遇到程序分支等情况

      • 相对寻址

        • 指令代码提供目标地址相对于当前指令地址的位移量

        • 转移到的目标地址就是当前指令地址加上位移量

        • 特点

          • 当同一程序被操作系统安排到不同的存储区域执行时,指令间的位移并没有改变
          • 给操作系统的灵活调度提供了很大方便
      • 直接寻址

        • 指令代码直接提供目标地址
      • 间接寻址

        • 指令代码指出寄存器或存储单元地址
        • 目标地址来自寄存器或存储单元中的内容
  • 数据寻址

    • 有效地址和形式地址

      • 指令中给出的地址叫形式地址
      • 由形式地址结合某些规则计算得到有效地址
      • 处理器通过有效地址转换为物理地址访问存储单元
    • IA-32处理器编程

      • 存储器地址使用包含段选择器和偏移地址的逻辑地址
    • 80X86寻址方式类型

      • 立即数寻址

        • 操作数紧跟在操作码之后,作为指令机器代码的一部分

        • 随着处理器的取指操作从主存进入指令寄存器

        • 例如

          • 数据传输指令 MOV AX,1234H
        • 可以是8、16位,需要满足低对抵,高对高

        • 立即数只能是源,不能是目的

        • 常用来给寄存器和存储单元赋值

      • 寄存器寻址

        • 指令的操作数存放在寄存器中

        • 例如

          • 数据传输指令 MOV AX , BX
        • 操作数即可以是源,也可以是目的

        • 任何CPU的通用寄存器都可以作为该寻址方式的操作数

        • 无需访问存储器,执行速度快

        • 功能

          • 指令执行后,源操作数不变,目的操作数为源的内容
      • 存储器直接寻址

        • 操作数在主存单元中,指令代码中直接给出操作数有效地址
        • 直接寻址方式的段超越
        • 有效地址EA以变量名的方式给出
      • 寄存器间接寻址

        • 有效地址存放在寄存器中

        • 规定

          • 在8086指令系统中

            • 只有BX,BP,SI,DI可作为间址寄存器(32位的不受限)
          • 若以 DI,SI,BX间接寻址,则默认操作数在数据段DS中

          • 若以BP间接寻址,则默认操作数在堆栈段SS中

          • 若操作数不在以上规定段内,则在指令中加段超越前缀

      • 寄存器相对寻址

        • 有效地址是寄存器内容与位移量之和
        • 规定–同寄存器间接寻址
      • 基址加变址寻址

        • 操作数的有效地址

          • 基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成
        • 规定

          • 只有BX,BP,SI,DI可用作基址加变址寄存器

            • 同组内的寄存器不能同时出现
            • 例如 :MOV AX,[BX + BP ],出现了两个基址寄存器
          • 当使用基址寄存器BX时,默认段寄存器DS

          • 当使用基址寄存器BP时,默认段寄存器SS

      • 相对基址加变址寻址

        • 操作数的有效地址

          • 基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容再加上位移量构成
      • 带比例的变址寻址

        • 在32位的寻址方式中,支持变址寄存器内容乘以一个常数(可取1、2、4、8)

数据形式

你可能感兴趣的:(计算机硬件基础,单片机,嵌入式硬件,硬件架构,stm32)