seegongsik
结构

什么是机器指令

到目前为止,我们依次认识了负责计算的电路、负责记忆的电路和地址。那么,怎样对这些零件说“做这个”呢?该认识计算机听得懂的语言——指令了。

01

指令就是“做什么”加“在哪里”

给计算机下的命令非常简单。
只要“做什么”和“在哪里、对哪里”两个部分就够了。
比如“加,3号和7号”。

加
3号 + 7号

做什么(加)+ 对哪里(3号和7号)。

换成人话,就是“把3号格和7号格加起来”。
又短又清楚。
计算机一条一条接收这样的小命令并执行,每一条就叫作一条指令。

02

指令也用0和1来写

可是计算机既不懂中文也不懂英文,只懂0和1。
所以指令也要用0和1来写。
前面部分写做什么,后面部分写在哪里,各自放在固定的位置、用固定的格式。

做什么 (加)
0010
在哪儿 (3号)
0011
在哪儿 (7号)
0111

前4位是指令的种类,后面是目标地址。

在我们眼里,这只是一串0和1,可在计算机看来,它是一句完整的话:“把3号和7号加起来。”
看固定的位置,意思就能准确读出来。

03

认识的“单词”只有几个

有个令人惊讶的事实:计算机认识的指令比想象中少。
取值、存值、相加、跳到别处,就只有这么几条基本指令。
靠这本小小的“单词本”,它能完成所有的事。

取
从内存的某个格子把值取出来
存
把值放进内存的某个格子
加
把两个值相加(第6课的加法器在干活)
跳
跳到定好的另一条指令

把这些简单的指令连上无数次,就能做出游戏和视频。

单词少也没关系。
就像用简短的词也能写出长长的故事,把这几条指令组合上几百万次,几乎没有做不到的事。

04

计算机怎样读指令

那么计算机怎样读这些0和1呢?
它在固定的位置把它们切开来看。
看到前面部分,知道“哦,是要相加”;看到后面部分,知道“是3号和7号”。
像这样切开来读,叫作译码。
按下面的“译码”按钮,每一部分的意思就会显示出来。

0010 0011 0111
做什么
加
在哪儿
3号
在哪儿
7号

在固定的位置切开,读出意思。

固定的位置,固定的意思。
所以计算机只看0和1,就能准确知道要对哪里做什么。
正因为有约定,才做得到。

05

把指令连起来,就是程序

一条指令很小,可一条条连起来,就能做成事。
“取5号的值,取6号的值,两个相加后存进7号”,这三行就成了一个加法程序。
按下运行,就会一行一行往下执行。

1取5号取5号的值(10)
2取6号取6号的值(7)
3相加,存到7号10 + 7 = 17
5号
10
6号
7
7号
0
按执行,一行一行走

三行的小程序。

刚才看到的,就是计算机工作的最底层。
我们用的所有程序,归根结底都是由几百万条这样的指令组成的。
下一课我们来看看,除了加法,减法和比较是在哪里完成的。

一句话总结指令就是用0和1写下的“做什么、在哪里”,是机器能听懂的最小的话。把几条基本指令一条条连起来,就是程序。
← 结构
如果有帮助,请支持我们