在8051存儲器組(00h至1Fh)中,8051向4個存儲體中的每一個提供32個寄存器作爲8個寄存器(R0 t0 R7)。 爲什麼這些寄存器不是作爲R0至R31給出的?爲什麼8051不具有R0至R32
在此先感謝..
在8051存儲器組(00h至1Fh)中,8051向4個存儲體中的每一個提供32個寄存器作爲8個寄存器(R0 t0 R7)。 爲什麼這些寄存器不是作爲R0至R31給出的?爲什麼8051不具有R0至R32
在此先感謝..
據我記得,你一次只能訪問8個寄存器。要訪問其他組中的其中一組,您需要切換銀行。我想這與指令操作數只有3位長(而不是5位)有關。
許多指令操作碼只有8位長;如果所有32個寄存器都可以在這些指令之一中訪問,那麼只剩下3位來編碼指令長度和操作。類似地,兩字節指令通常使用第二個字節來編碼完整的8位操作數(例如,地址),並且實際上具有相同的約束。
在許多情況下,使用更長的指令可以通過其絕對地址引用您需要的寄存器,但是如果您經常訪問它,則最好更改活動存儲庫,以便可以使用更多簡短的操作碼。
這與早期的x86類似,因爲某些指令僅由1或2個字節編碼。使用較大的寄存器空間往往需要較長的指令編碼,因爲3或4位對於基本指令集來說是不夠的 –
因爲它們在銀行中(您必須先切換到銀行) – Rob