指令格式

指令操作码与地址码

  • 指令字(简称指令)即表示一条指令的机器字。
  • 指令格式则是指令字用二进制代码表示的结构形式,由操作码字段地址码字段组成
  • 操作码字段:指明了指令的操作性质及功能
  • 地址码字段:指明了操作数的地址
  • 不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。 操作码
    组成操作码字段的位数一般取决于计算机指令系统的规模。
    地址码
    根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。

指令字长度与扩展方法

  • 指令字长度:一个指令字中包含二进制代码的位数。
  • 机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。
  • 使用多字长指令,目的在于提供足够的地址位来解决访问内存任何单元的寻址问题。其主要缺点是必须两次或多次访问内存以取出一整条指令,降低了 CPU 的运算速度,又占用了更多的存储空间。
  • 指令操作码扩展方法
    操作码不固定将增加指令译码和分析的难度,使控制器的设计复杂。
    通常在指令字中用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,则把它们的操作码的长度扩充到该地址字段。

指令和数据的寻址方式

重点掌握书上的例题

指令的寻址方式

  • 顺序的寻址方式
    指令在内存中式按地址顺序安排的,执行程序时,通常是一条指令接一条指令顺序进行。
  • 跳跃的寻址方式
    当程序要转移执行的顺序时,指令的寻址就采取跳跃寻址方式。跳跃,又称跳转,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。

数据的寻址方式

所谓操作数寻址方式,就是形成操作数的有效地址(EA)的方法。指令字中的地址码字段,通常是由形式地址和寻址方式特征位组成的,并不是操作数的有效地址。

  • 隐含寻址
    在指令中不明显的给出而是隐含着操作数的地址。
  • 立即寻址
    指令的地址字段指出的不是操作数的地址,而是操作数本身。
    这种方式的特点是指令执行时间很短,不需要访问内存取数(操作数在地址码字段中)。
  • 寄存器寻址
    操作数放在 CPU 的通用寄存器中,操作数所在的寄存器编号存放在指令的地址字段 A 中
  • 直接寻址
    寄存器直接寻址方式:指令地址码字段直接给出所需操作数在通用寄存器中地址编号。
    存储器直接寻址方式:一般简称直接寻址方式,其指令地址码字段直接给出存放在存储器中操作数的存储地址。
  • 间接寻址
    间接寻址的情况下,指令地址字段中的形式地址 A 不是操作数的真正地址,而是操作数地址的指示器,A 单元的内容是操作数的有效地址。
    寄存器间接寻址方式:寄存器间接寻址时,需先访问寄存器,从寄存器读出操作数地址后,再访问存储器才能取得操作数。
    存储器间接寻址方式:存储器间接寻址时,需访问两次存储器才能取得数据,第一次先从存储器读出操作数地址,第二次才能根据读出的操作数地址再取出真正的操作数。
  • 相对寻址
    所谓相对寻址方式,是指根据一个基准地址及其相对量来寻找操作数地址的方式
    PC相对寻址方式,一般简称相对寻址方式,是指将程序计数器 PC的内容(即当前执行指令的地址)与地址码部分给出的位移量(Disp)通过加法器相加,所得之和作为操作数的有效地址的方式。
  • 基址寻址
    计算机设置一个寄存器,专门用来存放基准地址,该寄存器就是基址寄存器(RB)。RB 既可在 CPU 中专设,也可由指令指定某个通用寄存器担任。
    基址寻址方式是将 CPU 中基址寄存器 RB 的内容加上指令格式中的形式地址 A 而形成操作数的有效地址。
    优点是可以扩大寻址能力。同形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。
  • 变址寻址
    变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把 CPU 中某个变址寄存器的内容与偏移量 D 相加来形成操作数有效地址。
  • 堆栈寻址
    操作数位于存储器中,操作数所在的存储器地址 EA 由堆栈指针寄存器 SP 隐含指出,通常用于堆栈指令。

指令的分类

  • 数据传送指令
  • 算术/逻辑运算指令
  • 移位操作指令
  • 程序控制指令
  • 输入输出指令
  • 字符串处理指令
  • 堆栈操作指令
  • 特权指令
  • 其他指令(状态寄存器置位、复位指令、测试指令、暂停指令,空操作指令,以及其他一些系统控制用的特殊指令。)