Режимы адресации памяти программ и данных
При обращении к Flash памяти программ и памяти данных (SRAM, регистровому файлу и памяти I/O) AVR Enhanced RISC микроконтроллерами ATmega603/103 используются мощные и эффективные режимы адресации. В данном разделе описываются режимы адресации, поддерживаемые AVR архитектурой. На рисунках OP обозначает часть слова команды, соответствующую операционному коду.
Непосредственная адресация, одиночный регистр Rd
Рис. 8. Непосредственная адресация одного регистра
Операнд содержится в регистре d (Rd).
Непосредственная адресация, два регистра Rd и Rr
Рис. 9. Непосредственная регистровая адресация двух регистров
Операнды содержатся в регистрах r (Rr) и d (Rd).
Результат сохраняется в регистре d (Rd).
Непосредственная адресация I/O
Рис. 10. Непосредственная адресация I/O
Адрес операнда содержится в 6 битах слова команды. Величина n определяет адрес регистра источника или регистра назначения.
Непосредственная адресация данных
Рис. 11. Непосредственная адресация данных
16-разрядный адрес данных содержится в 16 младших разрядах 32-разрядной команды. Rd/Rr определяют регистр источник или регистр назначения.
Косвенная адресация данных со смещением
Рис. 12. Косвенная адресация данных со смещением
Адрес операнда вычисляется суммированием содержимого регистра Y или Z с 6 битами адреса, содержащимися в слове команды.
Косвенная адресация данных
Рис. 13. Косвенная адресация данных
Адрес операнда содержится в регистре X, Y или Z.
Косвенная адресация данных с преддекрементом
Рис. 14. Косвенная адресация данных с преддекрементом
Перед выполнением операции регистр X, Y или Z декрементируется. Декрементированное содержимое регистра X, Y или Z является адресом операнда.
Косвенная адресация данных с постинкрементом
Рис. 15. Косвенная адресация данных с постинкрементом
После выполнения операции регистр X, Y или Z инкрементируется. Адресом операнда является содержимое X, Y или Z регистра предшествовавшее инкрементированию.
Адресация константы с использованием команд LPM и ELPM
Рис. 16. Адресация константы кода памяти
Адрес байта константы определяется содержимым регистра Z. Старшие 15 битов определяют слово адреса (от 0 до 32К). Состояние младшего бита определяет выбор младшего байта (LSB = 0) или старшего байта (LSB = 1). При использовании команды ELPM младший бит (RAM Page) регистра Z - RAMPZ используется для выбора страницы памяти (RAMPZ0 = 0:младшая страница, RAMPZ0 = 1:старшая страница). Команда ELPM не используется микроконтроллером ATmega603.
Непосредственная адресация памяти программ, команды JMP и CALL
Рис. 17. Непосредственная адресация памяти программ
Выполнение программы продолжается с адреса, записанного непосредственно в адресе команды.
Косвенная адресация памяти программ, команды IJMP и ICALL
Рис. 18. Косвенная адресация памяти программ
Выполнение программы продолжается с адреса, содержащегося в регистре Z (т.е. счетчик команд загружается содержимым регистра Z).
Относительная адресация памяти программ, команды RJMP и RCALL
Рис. 19. Относительная адресация памяти программ
Выполнение программы продолжается с адреса PC + k + 1. Значение относительного адреса может быть от -2048 до 2047.
отели турции
|