![]() ![]() ![]() ![]() ![]()
Раздел: Документация
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 на рисунке показано условно. Регистровый файл
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
ОЗУ I-* SFFFF Rr/Rd — РОН (источник/приемник) Рис. 2.30. Прямая адресация ОЗУ Косвенная адресация При косвенной адресации адрес ячейки памяти находится в одном из индексных регистров X, Y, и Z. В зависимости от дополнительных манипуляций, которые производятся над содержимым индексного регистра, различают следующие разновидности косвенной адресации: простая косвенная адресация, относительная косвенная адресация, косвенная адресация с преддекрементом и косвенная адресация с постинкрементом. 0 ... 46 47 48 49 50 51 52 ... 195 |