Прямая адресация к Регистрам Общего Назначения
Основным способом доступа к данным является прямое (непосредственное) обращение к РОН. На рис. 2.12 операнд команды содержится в регистре Rd, а КОП обозначает часть слова команды, соответствующую К оду ОП ерации, Обычно в формате команды отводиться пять бит, которые позволяют адресоваться к любому регистру. Команды, оперирующие с двумя регистрами, действуют, в основном, аналогичным образом. В этих командах регистр-приемник Rd (destination) указывается перед регистром-источником Rr (resource), то есть является первым параметром (см. рис. 2.13). Таким образом, команда: ADD R0, R1 реально выполняется так: R0 = R0 + R1.
Рис. 2.12. Прямая адресация одного регистра.
Результат сохраняется в регистре Rd.
Рис. 2.13. Прямая адресация к двум РОН.
Прямая адресация к регистрам ввода/вывода. На рис. 2.14 адрес операнда содержится в 6 битах слова команды (ячейка Р). IN R0, SREG;сохранить регистр состояния в регистре R0 OUT PORTB, R1;записать данные из регистра R1 в PORTB
Рис. 2.14. Прямая адресация регистров ввода/вывода.
Прямая адресация данных.
Рис.2.15. Прямая адресация данных. Единое адресное пространство является пространством данных, включая РОН, регистры ввода/вывода, внутренняя память и внешняя память (если есть). 16-разрядный адрес данных содержится в 16 младших разрядах 32-х разрядной команды. Rd/Rr определяет адрес регистра источника или регистра приемника. Такой тип адресации, к примеру, могут использовать команды LDS и STS: LDS PORTB, R1;записать данные из регистра R1 в PORTB STS PORTB, R1;записать данные из регистра R1 в PORTB
Косвенная адресация данных Существует четыре типа косвенной адресации данных: простая, с постинкрементом, с преддекрементом, со смещением. Для первых трех типов косвенной адресации данных адрес операнда содержится в регистре X, Y или Z. Для последнего типа (со смещением) адрес операнда вычисляется сложением содержимого регистров Y или Z с шестью битами адреса, содержащимися в слове команды. Сами же регистры остаются неизмененными. Смысл косвенной адресации с постинкрементом (с преддекрементом) заключается в следующем. После (до) выполнения операции регистр X, Y и Z инкрементируется (декрементируется). Рассмотрим некоторые примеры: 1) ST X, Rn;поместить данные из Rn в по адресу указанному в регистре Х; 2) ST X+, Rn;тоже что и в 1), но впоследствии X инкрементируется; 3) ST -X, Rn;предварительно X декрементируется; В предыдущих трех примерах вместо Х могут быть Y или Z. 4) STD Y+c, Rn; к значению Y прибавляется константа смещения ’c’ и по этому адресу записываются данные из Rn. Y при это остается неизменен. Вместо Y может быть только Z. Команды пересылки данных. Пересылка данных из одного места в другое является для AVR очень простой операцией, так как имеется очень большое количество команд, предназначенных для выполнения этой задачи. Ни одна команда пересылки данных не оказывает влияния на биты регистра состояния. Команда LPM – загрузка данных из таблиц, хранящихся в памяти программ. В этой команде младший бит индексного регистра Z используется для указания байта, который будет читаться, если 0 – читается младший байт, 1 – старший. Оставшиеся 14 байт используются для указания адреса слова. Команда MOV – копирует содержимое одного РОН в другой. LDI – загружает в один из 16 старших РОН байт, содержащийся в команде. IN и OUT – доступ к регистрам ввода/вывода, начиная с нулевого адреса. Полный список всех команд пересылки данных можно найти в ПРИЛОЖЕНИИ 1, Таблица А.3.
На рис.2.16 наглядно показано схематическое выполнение команды LPM.
Рис. 2.16. Команда LPM.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|