在 8051 存储区(00h 到 1Fh)中,8051 为 4 个存储区中的每一个提供 32 个寄存器作为 8 个寄存器(R0 t0 R7)。为什么这些寄存器不作为 R0 到 R31 给出?
提前致谢..
在 8051 存储区(00h 到 1Fh)中,8051 为 4 个存储区中的每一个提供 32 个寄存器作为 8 个寄存器(R0 t0 R7)。为什么这些寄存器不作为 R0 到 R31 给出?
提前致谢..
许多指令操作码只有 8 位长;如果所有 32 个寄存器都可以在其中一条指令中访问,那么将只剩下 3 位用于对指令长度和操作进行编码。类似地,双字节指令通常使用第二个字节来编码一个完整的 8 位操作数(例如,一个地址),并且实际上具有相同的约束。
在许多情况下,可以使用更长的指令通过绝对地址来引用您需要的寄存器,但如果您经常访问它,那么最好更改活动存储库,以便您可以使用更短的操作码。
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).