现在用 JUMP 让程序更有趣一些。
我们还把内存中 3 和 14 两个数字,改成 1 和 1,现在来从 CPU 的视角走一遍程序。
-
首先 LOAD_A 14,把 1 存入寄存器A(因为地址 14 里的值是 1)。
-
然后 LOAD_B 15,把 1 存入寄存器B\N(因为地址 15 里的值也是 1)。
-
然后 ADD B A 把寄存器 B 和 A 相加, 结果放到寄存器 A 里,现在寄存器 A 的值是 2 (当然是以二进制存的)。
-
然后 STORE_A 13 指令,把寄存器 A 的值存入内存地址 13。
-
现在遇到 JUMP 2 指令,CPU 会把"指令地址寄存器"的值,现在是 4,改成 2。因此下一步不再是 HALT,而是读内存地址 2 里的指令,也就是 ADD B A,我们跳转了。
-
寄存器 A 里是 2,寄存器 B 里是 1,1+2=3,寄存器 A 变成 3,存入内存。