1.关于计算机的指令系统
下面的这个就是我们的一个简单的计算机里面涉及到的指令:
m就是我们的存储器里面的地址,可以理解为memory这个意思,r可以理解为rom这样的单词的首字母,帮助我们去进行这个相关的指令的记忆,不要去死记硬背;L也是我们的内存里面的跳转到的地址
1)运算类指令:就是存储器里面的内容和寄存器里面的内容相加,这个结果存储到我们的寄存器里面去;
2)传送类指令:我们的数据是在存储器里面,怎么和这个寄存器里面的数据相加呢,这个时候就是需要进行load,也就是把我们的存储器里面的数据加载到寄存器里面进行相加的操作;
我们的结果存储到寄存器里面之后,需要重新转载到我们的存储器里面,这个就是store操作
3)转移类指令:就是我们的存储器里面需要执行的下一条的这个指令的具体地址;
2.指令在计算机里面是如何表示的
上面的这个毕竟是帮助我们程序员进行理解的,实际上这个指令在我们的计算机里面还是0101这样的代码罢了;
下面的这个就是针对于一个指令进行的分析:
1)指令是两个字节,也就是16个bit位数,第一个字节的高四位表示的是操作码,就是我们需要对于这个指令进行那些操作,低四位就是寄存器的编号,就是哪一个寄存器参与下面的这个运算;
2)第二个字节就是我们的存储器里面的具体的地址,表示的就是我们的存储器里面的哪一个数据需要和我们的寄存器进行相关的运算;
3)在我们的这个里面,操作码是四种情况,对应的就是我们的这个文章里面的第一小节里面的四个指令,实际上因为这个是四位,所以实际上可以表示的操作码情况应该是2的四次方,也就是16哥可能得情况,但是我们只会使用其中4个,这个为我们的后续的扩展提供了一个切口;
4)同样的道理,这个寄存器的编号也是16个可能得结果,但是我们只给出了4个寄存器,方便后面进行这个相关的扩展;
5)右边的这个图片里面也是给出来了这个正确的指令的实例和错误的例子,帮助我们去进行指令执行的内容的相关的理解,通过对于这个指令进行翻译,首先确定这个需要进行什么运算,然后是这个寄存器是哪一个,存储器里面的运算的地址是哪一个,然后我们就可以根据实际的情况判断我们的这个运算是不是合法的了;
我们就可以根据实际的情况判断我们的这个运算是不是合法的了;