有人可以帮我解释一下 bank select register 的概念吗?

Can someone help me explain the concept of bank select register?

有人可以帮我解释一下关于微控制器的组 select 寄存器的概念吗?我正在使用 PIC18F,正在阅读和学习 class 中的数据移动。 bank select register 和 access bank 的概念对我来说仍然是新的和令人困惑的。 (尤其是 access bank,当我进行 google 搜索时,我看到的都是关于普通货币银行的信息 =[ )

我读到的令人困惑的例子:

指令:CLRF F,a ==========> 清除数据寄存器F为零。如果 a = 0,则 F 位于访问库中;如果 a = 1

,则 F 位于 BSR 指定的库中

指令 MOVWF F,a =========> 将数据从 WREG 移动到数据寄存器 F。如果 a = 0,F 位于访问存储区;如果 a = 1,则 F 位于 BSR 指定的存储区.

^我了解有关 WREG 等的第一部分...,但没有真正理解访问银行和 BSR。如果有人知道任何资源或任何可以提供帮助的东西,将不胜感激:)

对银行的需求来自 PIC 处理 12 位地址的能力 space,而单字节地址仅适合 8 位。因此,您需要将高四位设置到 Bank Select Register (BSR).

这种寻址方案很快就会成为一种负担,因为在库之间切换的指令开始乱扔汇编程序的文本,这不是特别容易阅读,而且因为这些指令占用了宝贵的 space。为了缓解这个问题,PIC架构引入了所谓的access bank.

A​​ccess bank 包含分布在 BANK 0 中的 0..128 个特殊字节的特殊地址 space 的一部分,以及来自最后一个 bank 的一些寄存器。 PIC 使您无需切换银行即可访问这些位置,只需将 a 设置为零即可。通过将经常访问的数据放在访问寄存器中并使用快速访问寻址模式,仔细规划内存使用可以节省大量程序内存。

有关该主题的更多信息,请参阅此Q&A