8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
            
Раздел: Документация

0 ... 46 47 48 49 50 51 52 ... 195

Способы адресации памяти данных

Микроконтроллеры AVR семейства Mega поддерживают 8 способов адресации для доступа к различным областям памяти данных (РОН, РВВ, ОЗУ).

Вообще говоря, в действительности способов адресации всего два: прямая адресация и косвенная. Однако каждый способ адресации имеет несколько разновидностей в зависимости от того, к какой области памяти производится обращение (при прямой адресации) или какие дополнительные действия выполняются над индексным регистром (при косвенной адресации).

На рисунках этого подраздела, а также далее в книге встречается аббревиатура «КОП». Эта аббревиатура обозначает часть (или части) слова команды, содержащую значение кода операции.

Прямая адресация

При прямой адресации адреса операндов содержатся непосредственно в слове команды. В соответствии со структурой памяти данных существуют следующие разновидности прямой адресации: прямая адресация одного РОН, прямая адресация двух РОН, прямая адресация РВВ, прямая адресация ОЗУ.

Прямая адресация одного регистра общего назначения

Этот способ адресации используется в командах, оперирующих с одним из регистров общего назначения. При этом адрес регистра-операнда (его номер) содержится в пяти битах слова команды (Рис. 2.27). Положение разрядов d на рисунке показано условно.

Регистровый файл

о

I-31

Операнд — регистр d (Rd)

Puc. 2,27. Прямая адресация одного регистра общего назначения

Примером команд, использующих этот способ адресации, являются команды работы со стеком (push, pop), команды инкрементирования (inc), декрементирования (dec), а также некоторые команды арифметических операций.


Прямая адресация двух регистров общего назначения

Этот способ адресации используется в командах, оперирующих одновременно с двумя регистрами общего назначения. При этом адрес регистра-источника содержится в битах 9, 3...0 (5 битов), а адрес регистра-приемника — в битах 8...4 (5 битов) слова команды (Рис. 2.28). Положение битов г и d на рисунке показано условно.

Регистровый файл

15 11 6 5 0

КОП Rr Rd

I

d

31

Операнды — регистры г (Rr) и d (Rd) Результат — в регистре d (Rd)

Puc. 2.28. Прямая адресация двух регистров общего назначения

К командам, использующим этот способ адресации, относятся команда пересылки данных из регистра в регистр (MOV), а также большинство команд арифметических операций.

Здесь необходимо сделать одно замечание. Дело в том, что некоторые команды, имеющие только один регистр-операнд, тем не менее используют рассматриваемый способ адресации. Просто в этом случае источником и приемником является один и тот же регистр. В качестве примера можно привести команду очистки регистра (CLR Rd), которая в действительности выполняет операцию «Исключающее ИЛИ» регистра с самим собой (EOR Rd, Rd).

Прямая адресация регистра ввода/вывода

Данный способ адресации используется командами пересылки данных между регистром ввода/вывода, расположенным в основном пространстве ввода/вывода, и регистровым файлом — in и out. В этом случае адрес регистра ввода/вывода содержится в битах 10, 9, 3...0 (6 битов), а адрес РОН — в битах 8...4 (5 битов) слова команды (Рис. 2.29). Положение битов r/d и Р на рисунке показано условно.


Регистровый файл

15

6 5

КОП

Rr/Rd

Р — адрес регистра ввода/вывода Rr/Rd — РОН (источник/приемник)

Рис. 2.29. Прямая адресация регистра ввода/вывода

63

Прямая адресация ОЗУ

Данный способ используется для обращения ко всему адресному пространству памяти данных.

В системе команд микроконтроллеров семейства имеется только две команды, использующие этот способ адресации. Это команды пересылки байта между одним из РОН и ячейкой ОЗУ — LDS и STS. Каждая из этих команд занимает в памяти программ два слова (32 бита). В первом слове содержится код операции и адрес регистра общего назначения (в битах с 8-го по 4-й). Во втором слове находится адрес ячейки памяти, к которой происходит обращение (Рис. 2.30).

21 20 16

коп

Rr/Rd

16-битный адрес

ОЗУ

I-* SFFFF

Rr/Rd — РОН (источник/приемник)

Рис. 2.30. Прямая адресация ОЗУ

Косвенная адресация

При косвенной адресации адрес ячейки памяти находится в одном из индексных регистров X, Y, и Z. В зависимости от дополнительных манипуляций, которые производятся над содержимым индексного регистра, различают следующие разновидности косвенной адресации: простая косвенная адресация, относительная косвенная адресация, косвенная адресация с преддекрементом и косвенная адресация с постинкрементом.



0 ... 46 47 48 49 50 51 52 ... 195