机器指令 @

机器指令的定义 @

计算机唯一能识别的语言是机器语言,而机器语言是由一条条语句构成,人们习惯把构成机器语言的这些语句称为机器指令,全部机器指令的集合又称为机器的指令系统。

机器指令的格式 @

一条指令由操作码和地址码组成,指令的字长分为固定字长和可变字长。

操作码 @

  1. 长度固定,用于指令字长较长的情况,RISC。如 IBM370,操作码 8 位
  2. 长度可变,操作码分散在指令字的不同字段中,不允许较短操作码是较长操作码的前缀,各条指令操作码不能重复。
  3. 扩展操作码技术,操作码的位数随地址数的减少而增加

三地址指令操作码,每减少一种最多可构成 $2^4$ 种二地址指令 二地址指令操作码,每减少一种最多可多构成 $2^4$ 种一地址指令

地址码 @

地址码也被称为操作数字段,地址码的作用:

  • 需要指出操作数的地址,即用哪里的数来操作。
  • 需要指出操作后的结果放在哪里,即给出结果存放的地址。
  • 需要指出该条指令执行结束后怎么办,即需要指出下一条指令的地址。
  1. 四地址

A4 用于存放下一条将要执行指令的地址,若指令字长 32 位,操作码 8 位,四个地址码字段各 6 位,直接寻址范围 $2^6=64$,访存 4 次

  1. 三地址

A1 与 A2 进行 OP 后,结果保存在 A3 中,假设指令字长 32 位,操作码 8 位,地址码各 8 位,寻址范围 $2^8=256$,若地址字段均为主存地址,需要四次访存。

  1. 二地址

A1 与 A2 进行 OP 后,结果存入 A1 或 A2 中,假设指令字长 32 位,操作码 8 位,地址码各 12 位,寻址范围 $2^{12}=4K$

  1. 一地址

从 A1 读取操作数,进行 OP 操作后,操作码字段通常为加一,减一,求反求补等。 指令可隐含约定另一个操作数由 ACC 提供,运算结果存放在 ACC 中。

  1. 零地址,无地址码 不需要操作数的指令,如空操作指令,停机指令,关中断指令等

指令字长 @

指令字长指一条指令所占用存储空间的大小,由于主存一般按字节编址,指令字长一般为字节的整数倍。若某指令长度等于机器字长,则称此指令为单字长指令,指令字长决定于操作码的长度,操作数地址的长度,操作数地址的个数。

数据字:计算机中某个字表示数据

指令字:计算机中某个字表示指令

  1. 指令字长固定,指令字长=存储子长
  2. 指令字长可变,按字节的倍数变化

小结 @

  • 当用一些硬件资源代替指令字中的地址码字段后

    • 可扩大指令的寻址范围
    • 可缩短指令字长
    • 可减少访存次数
  • 当指令的地址字段为寄存器时

    • 三地址 OP R1,R2,R3
    • 二地址 OP R1,R2
    • 一地址 OP R1
    • 可缩短指令字长
    • 指令执行阶段不访存

操作数 @

操作数类型 @

  • 地址 无符号整数
  • 数字 定点数、浮点数、十进制数
  • 字符 ASCII
  • 逻辑数 逻辑运算

数据在存储器中的存放方式 @

例 1,2,3,4,5,6,7,8,H 的存放方式 字地址为高字节地址

字地址为低字节地址

数据在存储器中的存放方式 @

从任意位置开始存储 @

优点: 不浪费存储资源

缺点:除了访问第一个字节之外,访问其他任何类型的数据,都可能花费两个存储周期的时间,读写控制比较复杂。

从一个存储字的起始位置开始访问 @

优点: 无论访问何种类型的数据,在一个周期内均可完成,读写控制简单。

缺点:浪费了宝贵的存储资源

边界对准方式,从地址的整数倍位置开始访问 @

数据存放的起始地址是数据长度(按编址单位进行计算)的整数倍,本方案是前两个方案的折中。

操作类型 @

  • 数据传送

  • 算术逻辑操作 加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算、与、或、非、异或、位操作、位测试、位清除、位求反. 如 8086:ADD SUB MUL DIV INC DEC CMP NEG AAA AAS AAM AAD AND OR NOT XOR TEST

  • 移位操作

    • 算术移位
    • 逻辑移位
    • 循环移位
  • 转移

    • 无条件转移 JMP
    • 条件转移
      • 结果为零转 (z=1) JZ
      • 结果为溢出转 (o=1) JO
      • 结果有进位转 (c=)1 JC
      • 跳过一条指令 SKP
    • 程序调用和返回
    • 陷阱与陷阱指令
      • 一般不提供给用户,出现事故时,由 CPU 自动产生
      • 设置供用户使用的陷阱指令
  • 输入输出