如何一次使用8051的所有寄存器库?

时间:2019-04-28 16:14:31

标签: assembly microcontroller 8051

我知道我们只能使用PSW.4PSW.3一次为8051设置一个激活的存储库,但是以某种方式或技巧可以一次选择所有存储库吗?

1 个答案:

答案 0 :(得分:2)

您至少不能在指令中直接直接 注册寄存器的名称。这是因为8051指令被设计为使用单个字节或一个字节加一个立即数进行编码。该字节包含操作码和3位寄存器编号。因此,您只能在指令中对8个寄存器进行编码

不过,寄存器位于通用存储器区域中,因此您可以使用存储器访问指令随时访问它们。当然,这限制了您可以使用其他银行的收款机。例如,您可以使用MOV R3, 05h将bank 0中的R5移至当前R3,因为bank 0位于地址范围00h-07h

  

可以使用比其他寄存器短1个字节的指令来访问8个通用寄存器R0–R7。它们被映射到0x00和0x1F之间的IRAM。在任何给定时间,仅由该范围内的8个字节使用,这由PSW中的两个存储体选择位决定。

     

https://en.wikipedia.org/wiki/Intel_MCS-51#Registers

Bankingincrease the total addressable memory with a limited address range的一种简单方法。英特尔在这里用3位寻址32个寄存器,但是当然一次只能访问8个。但是有些指令甚至没有更多的比特来编码寄存器,并且您只能像MOV @R0/1,#data

这样指定R0或R1。

另请参见