第九章:指令系统

复习

  • 第三章:利用电能和布尔代数,造出了一个加法器。
  • 第四章:引入有符号数,介绍原码、反码和补码,使计算机可以表示负数和运算减法。
  • 第五章:介绍乘法与除法,并尝试从原理上优化效率过慢的问题。
  • 第六章:组成算术逻辑单元,负责计算,模块化。
  • 第七章:组成简单存储器,负责存储中间值,模块化。
  • 第八章:组成控制器,负责自动化控制,模块化。

正文

指令的由来

  在上一章中,我们介绍了控制器,它能够自动地、按照预定的步骤完成一系列操作。但是,控制器如何知道要做什么操作呢?这就需要我们给它一些指示。这些指示,就是指令。

指令的组成

  一条指令通常由两个部分组成:

  1. 操作码(Operation Code,简称 OpCode)
    • 表示要执行什么操作
    • 比如:加法、减法、存储、读取等
  2. 操作数(Operand)
    • 表示操作的对象
    • 可能是数据本身,也可能是数据的地址
    • 一条指令可能有 0 个、1 个或多个操作数

常见的指令类型

  1. 数据传送指令

    • LOAD(加载):从存储器读取数据到寄存器
    • STORE(存储):将寄存器中的数据写入存储器
    • MOVE(移动):在寄存器之间传送数据
  2. 运算指令

    • ADD(加法):两个数相加
    • SUB(减法):两个数相减
    • MUL(乘法):两个数相乘
    • DIV(除法):两个数相除
  3. 控制指令

    • JUMP(跳转):改变程序的执行顺序
    • CALL(调用):调用一个子程序
    • RETURN(返回):从子程序返回

指令的执行过程

  每条指令的执行都要经过以下步骤:

  1. 取指令(Fetch)

    • 从存储器中读取指令
    • 将指令存入指令寄存器
  2. 译码(Decode)

    • 分析指令的操作码
    • 确定要执行什么操作
  3. 执行(Execute)

    • 完成指令指定的操作
    • 可能需要读取操作数
    • 可能需要存储结果
  4. 更新程序计数器

    • 准备执行下一条指令
    • 如果是跳转指令,则更新到跳转地址

小结

知识点

  1. 指令是计算机执行的最基本单位
  2. 指令由操作码和操作数组成
  3. 常见的指令类型包括数据传送指令、运算指令和控制指令
  4. 指令执行过程包括取指令、译码和执行三个基本步骤

思考题

  1. 为什么需要不同类型的指令?
  2. 程序计数器在指令执行过程中起什么作用?
  3. 如果没有控制指令,计算机能正常工作吗?

思考题答案(仅供参考)

  1. 不同类型的指令用于完成不同的任务:

    • 数据传送指令用于数据的移动和存储
    • 运算指令用于数学计算
    • 控制指令用于改变程序执行顺序
  2. 程序计数器的作用:

    • 记录当前执行的指令地址
    • 指向下一条要执行的指令
    • 在跳转时改变执行顺序
  3. 没有控制指令的影响:

    • 程序只能顺序执行
    • 无法实现循环和分支
    • 无法进行子程序调用
    • 程序的功能将极其有限

协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。