В 8051 память (00h to 1Fh) 8051 предоставляют 32 регистра как 8 регистров (R0 t0 R7) для каждого из 4 банков. Почему эти регистры не указаны как R0-R31?Почему у 8051 нет R0 до R32
Заранее спасибо ..
В 8051 память (00h to 1Fh) 8051 предоставляют 32 регистра как 8 регистров (R0 t0 R7) для каждого из 4 банков. Почему эти регистры не указаны как R0-R31?Почему у 8051 нет R0 до R32
Заранее спасибо ..
Насколько я помню, вы можете получить доступ только 8 из тех, кто зарегистрировался в то время. Чтобы получить доступ к одной из других групп, вам необходимо переключить банк. Я предполагаю, что это имеет какое-то отношение к операнду инструкции, имеющему только 3 бита (а не 5 бит).
Многие коды операций с инструкциями имеют длину всего 8 бит; если все 32 регистра были доступны в одной из этих инструкций, тогда осталось бы всего 3 бита для кодирования длины инструкции и операции. Аналогично, две байтовые команды часто используют второй байт для кодирования полного 8-битного операнда (например, адрес) и имеют фактически такое же ограничение.
Во многих случаях можно обратиться к регистру, который вам нужен по его абсолютному адресу, используя более длинную инструкцию, но если вы будете получать к ней доступ часто, возможно, лучше изменить активный банк, чтобы вы могли использовать больше короткие коды операций.
это похоже на x86 в первые дни, потому что некоторые инструкции кодируются только 1 или 2 байтами. Использование большего пространства регистров часто требует более длинного кодирования для инструкций, поскольку 3 или 4 бита не будут достаточными для базового набора команд –
потому что они находятся в банках (вы должны сначала переключиться на банк) – Rob