第九章:指令系统
复习
- 第三章:利用电能和布尔代数,造出了一个加法器。
- 第四章:引入有符号数,介绍原码、反码和补码,使计算机可以表示负数和运算减法。
- 第五章:介绍乘法与除法,并尝试从原理上优化效率过慢的问题。
- 第六章:组成算术逻辑单元,负责计算,模块化。
- 第七章:组成简单存储器,负责存储中间值,模块化。
- 第八章:组成控制器,负责自动化控制,模块化。
正文
指令的由来
在上一章中,我们介绍了控制器,它能够自动地、按照预定的步骤完成一系列操作。但是,控制器如何知道要做什么操作呢?这就需要我们给它一些指示。这些指示,就是指令。
指令的组成
一条指令通常由两个部分组成:
- 操作码(Operation Code,简称 OpCode)
- 表示要执行什么操作
- 比如:加法、减法、存储、读取等
- 操作数(Operand)
- 表示操作的对象
- 可能是数据本身,也可能是数据的地址
- 一条指令可能有 0 个、1 个或多个操作数
常见的指令类型
-
数据传送指令
- LOAD(加载):从存储器读取数据到寄存器
- STORE(存储):将寄存器中的数据写入存储器
- MOVE(移动):在寄存器之间传送数据
-
运算指令
- ADD(加法):两个数相加
- SUB(减法):两个数相减
- MUL(乘法):两个数相乘
- DIV(除法):两个数相除
-
控制指令
- JUMP(跳转):改变程序的执行顺序
- CALL(调用):调用一个子程序
- RETURN(返回):从子程序返回
指令的执行过程
每条指令的执行都要经过以下步骤:
-
取指令(Fetch)
- 从存储器中读取指令
- 将指令存入指令寄存器
-
译码(Decode)
- 分析指令的操作码
- 确定要执行什么操作
-
执行(Execute)
- 完成指令指定的操作
- 可能需要读取操作数
- 可能需要存储结果
-
更新程序计数器
- 准备执行下一条指令
- 如果是跳转指令,则更新到跳转地址
小结
知识点
- 指令是计算机执行的最基本单位
- 指令由操作码和操作数组成
- 常见的指令类型包括数据传送指令、运算指令和控制指令
- 指令执行过程包括取指令、译码和执行三个基本步骤
思考题
- 为什么需要不同类型的指令?
- 程序计数器在指令执行过程中起什么作用?
- 如果没有控制指令,计算机能正常工作吗?
思考题答案(仅供参考)
-
不同类型的指令用于完成不同的任务:
- 数据传送指令用于数据的移动和存储
- 运算指令用于数学计算
- 控制指令用于改变程序执行顺序
-
程序计数器的作用:
- 记录当前执行的指令地址
- 指向下一条要执行的指令
- 在跳转时改变执行顺序
-
没有控制指令的影响:
- 程序只能顺序执行
- 无法实现循环和分支
- 无法进行子程序调用
- 程序的功能将极其有限
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。