0

在 8051 存储区(00h 到 1Fh)中,8051 为 4 个存储区中的每一个提供 32 个寄存器作为 8 个寄存器(R0 t0 R7)。为什么这些寄存器不作为 R0 到 R31 给出?

提前致谢..

4

2 回答 2

4

许多指令操作码只有 8 位长;如果所有 32 个寄存器都可以在其中一条指令中访问,那么将只剩下 3 位用于对指令长度和操作进行编码。类似地,双字节指令通常使用第二个字节来编码一个完整的 8 位操作数(例如,一个地址),并且实际上具有相同的约束。

在许多情况下,可以使用更长的指令通过绝对地址来引用您需要的寄存器,但如果您经常访问它,那么最好更改活动存储库,以便您可以使用更短的操作码。

于 2013-09-28T08:00:58.873 回答
2

As far as I remember you can access only 8 of those register at a time. To access one of the other groups you need to switch the bank. I guess it has something to do with a instruction operand being only 3 bits long (and not 5 bits).

于 2013-09-27T14:08:24.907 回答