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