那我们就像在这个模型机上尝试执行一条计算机的指令。
这里给出了一个例子,我们想执行的这条指令是ADD R0,
[6],这样的一个指令格式代表什么含义呢? 从外边,我应该能看出来这是一条加法指令。
那么这个加法应该有两个原操作数, 其中一个就是通用寄存器R0的内容;
另一个[6],中括号就代表是存储单元的内容。
那么,中括号里面带一个6说明是地址为6的存储单元的内容。
我们把这两个原操作数相加,就可以得到一个运算结果。
那么,在我们这种格式指令当中,默认第一个操作数即是原操作数又是目的操作的。
这个运算结果就会更新到通用寄存器R0中。
现在我们就来看这条指令是如何在模型机上执行的。
假设模型机的当前状态已经有了一些初始值,
我们需要注意的是CPU中的R0
所保存的值是00000011,这等于10进制的3。
而存储单元地址为6的 存储单元的内容是00000010,
相当于10进制的2。
那么我们所要做的,就是把这个存储单元的数和R0当中的数相加,最后再放到R0中。
我们还看到 PC寄存器也就是指向下一条指令地址的寄存器,保存的值是
0001,那么,他所指向的内层单元, 这里,所以这个内层单元中其实是
保存了当前所需要执行的那条指令。
我就用10101010这么一个值来指代, 这仅仅是指代而已,
那我们就来看在这个模型机上是如何运行的。
指令执行的第一步-,取指。
取指这一步所要做的
是控制器将致力的地址送往存储器,存储器按给定的地址读出指令内容,送回控制器。