57 реалізується непряма адресація. Адреса байта знаходиться в парі регістрів X, Y або Z. При виконанні команд № № 42-47 після виконання пересилання адресу в парі регістрів апаратно збільшується па одиницю. При виконанні команд № № 48-53 до виконання пересилання адресу в парі регістрів апаратно зменшується на одиницю. При виконанні команд № № 54-57 адреса, за якою проводиться звернення, дорівнює адресою в парі регістрів Y або Z, збільшеному на число q, яке зазначено в коді команди. Адреса в парі регістрів залишається без зміни.
У командах № № 58 і 59 в якості коду адреси використовується код, що знаходиться в регістрі-покажчику стека. При запуску мікроконтролера в регістр-покажчик стека заноситься код числа 0. Для нормальної роботи стека в регістр-покажчик стека на початку програми необхідно занести код друго го числа. Звичайно як такого числа використовують старший адресу в SRAM. Наприклад, для мікроконтролера типу 8515 такою адресою є число $ 025F. p> Команди із зверненням до регістрів введення-виведення
По командах із зверненням до регістрів введення-виведення виконуються операції пересилки (копіювання) байта між регістром загального призначення та регістром вводу-виводу з використанням для вибору регістра введення-виведення його номера ($ 00 - $ 3F). Команди із зверненням до регістрів введення-виведення описані в табл. 6. Машинні коди команд мають формат "Слово". Команди виконуються за один такт. p> У табл. 6 використовуються наступні нові позначення:
в– РГР - регістр введення-виведення з номером Р;
в– (РГР) - байт в регістрі РГР.
При записі мнемокода команди замість конкретного номера регістру може використовуватися його символічне ім'я. Всі регістри вводу-виводу мають штатні імена. Імена регістрів вводу-виводу і їх номери наведені в додатку П4. У мікроконтролерів різних типів регістри введення-виведення, що мають однакові імена, можуть мати різні номери. При записі в мнемокодах імен регістрів замість їх номера необхідно використовувати версію AVR-Асемблера для мікроконтролера даного типу.
Команда із зверненням до FlashROM
За командою із зверненням до FlashROM виконується пересилання (Копіювання) байта з половини комірки пам'яті в FlashROM в регістр загального призначення R0. Команда описана в табл. 7. Машинний код команди має формат "Слово". Команда виконується за три такти. p> До виконання команди необхідно адресу, відповідний комірці пам'яті в FlashROM, в якій зберігається константа, помножити на 2 і записати в пару регістрів Z (№ № $ 30, $ 31).
При множенні на 2 (зрушення коду вліво на один розряд) у молодшому розряді регістра ZL ($ 30) виявляється цифра 0. При нульовому значенні молодшого розряду вибирається байт з молодшої половини осередку FlashROM. Для вибору байта зі старшої половини осередку необхідно число, код якого знаходиться в парі регістрів Z, збільшити на 1 з використанням команди № 33 з мнемокод ADIW R30, 1 або ADIW ZL, 1.
Запис констант в FlashROM виконується при програмуванні мікроконтролера.
Команди операцій з бітами
Команди операцій з бітами описані в табл. 8 і 9. Машинні коди всіх команд мають формат "слово". Команди № № 65 і 66 виконуються за 2 такту, решта команд - за 1 такт.
У табл. 8 використовується наступне нове позначення:
в– РгР.b - розряд b (b = 0-7) регістра введення-виведення з номером Р (Р = $ 00 - $ 1F (!)), біт в розряді РгР.Ь.
По командах № № 63 і 64 виконується пересилання (Копіювання) біта між зазначеним розрядом регістра загального призначення і розрядом Т регістру SREG.
По командах № № 65 і 66 встановлюється в необхідне стан (0 або 1 відповідно) вказаний розряд регістра введення-виведення, а по командам № № 67 і 68 - зазначений розряд регістра SREG.
При записі Мнемокод команд № № 65 і 66 замість номера регістра (Р) може бути зазначено його символічне ім'я (див. додаток П4), а замість номера розряди (b) - символічне ім'я розряду. У мікроконтролерах сімейства AVR розряди багатьох регістрів введення-виведення мають штатні імена. Ці імена наводяться в тексті при розгляді пристроїв, в яких ці розряди використовуються. Штатні імена розрядів регістрів введення-виведення, керуючих роботою різних пристроїв мікроконтролера і відображають стан цих пристроїв наведені в додатку П5.
У мікроконтролерах деяких типів розряди однойменних регістрів з однаковими іменами мають різні номери. При використанні штатних імен регістрів вводу-виводу і штатних імен розрядів в них необхідно використовувати версію AVR Асемблера для мікроконтролера відповідного типу.
При призначенні штатного імені розряду малося на увазі, що цей розряд належить певному реєстру введення-виведення, проте в Мнемокод команд № № 65 і 66 необхідно вказувати і ім'я/номер регістра і ім'я розряду. Необхідне значення біта (0 або 1) у розрядах регістрів вводу-виводу з номерами від $ 20 до $ 3F встанов...