Файл регистров общего назначения

Все команды, оперирующие регистрами, прямо адресуются к любому из регистров за один машинный цикл. Единственное исключение - пять команд оперирующих с константами: SBCI, SUBI, CPI, ANDI, ORI, а также команда LDI, загружающая регистр константой. Эти команды работают только со второй половиной регистрового файла - R16..R31. Команды SBC, SUB, CP, AND и OR, также как и все остальные, могут работать со всем регистровым файлом.

Каждому регистру присвоен адрес в пространстве данных, они отображаются на первые 32 ячейки ОЗУ (SRAM). Хотя регистровый файл физически размещен вне ОЗУ, подобная организация памяти дает гибкий доступ к регистрам. Регистры X, Y и Z могут использоваться для индексации любого регистра.

Кроме обычных функций, регистры R26..R31 имеют дополнительные функции, эти регистры можно использовать как адресные указатели в области памяти данных. Эти регистры обозначаются как X,Y,Z, их расположение в ОЗУ показано на рис.4.2.

 
Регистр X
  R27($1B) R26($1A)
     
 
Регистр Y
  R29($1D) R28($1C)
     
 
Регистр Z
  R31($1F) R30($1E)

 

Рисунок 4.2 – Регистры X, Y и Z

 

При различных режимах адресации эти регистры могут использоваться как фиксированный адрес, для адресации с автоинкрементном или с автодекрементом.

Арифметико-логическое устройство - АЛУ

АЛУ процессора непосредственно подключено к 32 регистрам общего назначения. За один машинный цикл АЛУ производит операции между реги­страми регистрового файла. Команды АЛУ разделены на три основных кате­гории - арифметические, логические и битовые. Некоторые микроконтроллеры семейства AVR имеют аппаратный умножитель в арифметической части АЛУ.

Загружаемая память программ.

AT90S8535 содержит 2кБ загружаемой FLASH-памяти для хранения про­грамм. Поскольку все команды занимают одно 16-разрядное слово, FLASH-память организована как 1K 16-разрядных слов. Флэш-память выдерживает не менее 1000 циклов перезаписи.

Программный счетчик имеет ширину 10 бит и таким образом адресуется к 1024 словам программной флэш-памяти.

Подробно загрузка FLASH-памяти будет рассмотрена дальше.

Таблицы констант могут располагаться в диапазоне адресов 0-2K. (см. описание команды LPM).