3.10. Регистры RAMP и расширенной косвенной адресации
Чтобы адресоваться к памяти программ или памяти данных размером более 64 кбайт, адрес или указатель адреса должен иметь разрядность более 16 бит. Это реализовано путем присоединения одному из регистров X- Y или Z еще одного регистра, в котором хранится старший байт 24-битного адреса или указателя адреса.
Такие регистры имеются только у МК со встроенным интерфейсом внешней шины и/или с объемом памяти программ или памяти данных более 64 кбайт. У таких МК, для адресации в пределах всего пространства памяти данных и памяти программ используются дополнительные биты, организованные в отдельные регистры.
3.10.1. Регистры RAMPX, RAMPY и RAMPZ
Регистры RAMPX, RAMPY и RAMPZ являются расширением для регистров X, Y и Z, соответственно, и делают возможной косвенную адресацию в пределах всего пространства памяти за пределами 64 кбайт и до 16 Мбайт.
Рисунок 3.6. Комбинация регистров RAMPX и X, RAMPY и Y, и RAMPZ и Z
При чтении (ELPM) и записи (SPM) ячеек памяти программ за пределами первых 128 кбайт адресного пространства, регистр RAMPZ соединяется с Z-регистром и, в результате, адрес становится 24-битным. Выполнение инструкции LPM не зависит от содержимого RAMPZ.
3.10.2. Регистр RAMPD
Данный регистр связан с операндом, что дает возможность прямой адресации в пределах адресного пространства, лежащего выше первых его 64 кбайт. Совместно, RAMPD и операнд, образуют 24-битный адрес.
Рисунок 3.7. Комбинация регистра RAMPD и K
3.10.3. Регистр расширенной косвенной адресации EIND
EIND соединяется с Z-регистром, когда требуется косвенный переход или вызов подпрограммы по адресу, лежащему за пределами первых 128 кбайт (64 тыс. слов) памяти программ.
Рисунок 3.8. Комбинация регистров EIND и Z
|