通常,指令从0000h开始存放,这是因为当计数器复位后从该位置访问RAM阵列。最后的Halt指令存放在000Ch地址。我们可以把这3个操作数及它们的运算结果保存在RAM阵列的任何地址(当然这不包括最开始的13个字节,因为它们已经用来存放操作指令),所以我们选择在从0010h地址开始保存操作数。
假设现在你发现需要在原来的结果中再加两个数,你可以向存储器中输入一些新的指令以替换原来所有的指令,但是你可能不愿意这么做。或许你更倾向于在原指令的地址后增加一些新的指令。第一步要做的就是把000Ch地址处的Halt指令替换为一个Load指令。但你仍然需要增加两条Add指令,一条Store指令,以及一条新的Halt指令。唯一的问题是,现在0010h地址已经保存了一些数据,因此需要把这些数据转移到较高的地址空间中,然后还需要修改那些指向这些地址空间的指令。
试想一下,把操作码和操作数存放在同一个RAM阵列并不是一个急于解决的问题。但可以肯定的是,这是一个迟早要解决的问题,不如现在就找一个解决办法吧。在当前的例子中,也许你更愿意从0020h地址开始存放新的指令,并从0030h处开始存放新的操作数据。
编码隐匿在计算机软硬件背后的语言
236