1

数字计算机有一个每字 32 位的存储单元。指令集由 150 种不同的操作组成。所有指令都有一个操作码部分(操作码)、一个寄存器操作数部分(指定 10 个不同的寄存器之一)和一个内存操作数地址部分。每条指令都存储在一个内存字中。

(d) 这台计算机的指令可以使用 (i) 两个内存操作数和 (ii) 两个寄存器操作数吗?如果可以,请说明方法;如果不能,请解释为什么不能。

我真的不确定这个问题。我认为第一部分的答案是,如果指定的寄存器包含内存地址并且指令类似于 ADD,则指令将使用两个内存操作数?还是我不明白这个问题?

至于(ii),我觉得答案一定是可以,但是不知道是怎么做到的,也不知道怎么去寻找答案。编辑:答案仅仅是可以将寄存器操作数放在指令的内存操作数部分吗?

4

1 回答 1

2

从指令编码来看,每条指令占用 32 位,其中 8 位用于对指令/操作进行编码,4 位用于对寄存器进行编码,其余 20 位用于对内存中的地址进行编码。

鉴于上述情况,我认为没有理由不能使用诸如 ADD、OR、MOV、XCHG 等指令来操作 2 个内存操作数,这些操作数的地址在这 20 位中,而寄存器由其他 4 位选择位。

同样,我看不出为什么寄存器不能驻留在主存储器中并由指令的 4 位字段或指令的 20 位字段中的适当地址选择。存在许多 CPU,其寄存器没有与主存分开存储,只是主存的固定位置。

如前所述,这个问题允许对这两个问题都给出“是”的答案。

于 2012-03-12T02:48:23.573 回答