Макрос в Assembler на прикладі AVR
Макрос- це набір команд та інструкцій, які групуються в єдину команду для автоматизації завдань програмування, прискорення часто виконуваних дій редагування та форматування.
ТакожМакроси можуть використовуватися для прискорення розробки програмного забезпечення для мікроконтролерів мовою програмуванняAssembler. У процесі компіляціїМакроси замінюються на послідовності команд мікроконтролера. Подібний підхід до програмування дозволяє полегшити сприйняття програмного коду, зменшити розмір вихідних кодів, а також наблизити програмування наAssembler на вигляд до мови програмуванняC.
Запис Макроса
Макрос мовою програмування Assembler складається з наступних частин:
Запис макросу для мікроконтролера AVR може виглядати так:
Застосування цьогоМакросу виглядатиме таким чином:
У цьому випадкуМакрос викликається за своїм ім'ямouti. На першому місці@0 знаходиться регістрDDRB,а на другому@ 1 знаходиться змінна0b01111111, яка записується в даний регістр. Тобто фактично застосування макросу виглядає так:
У процесі компіляції програмного коду препроцесор виконує підстановку даних макрос і його інкапсуляцію в програмний код. Макрос у цьому випадку схожий на функцію або підпрограму, яка викликається командоюrcall (або іншими) з тією відмінністю, що підпрограми, що викликаються командоюrcall, можуть бути присутніми в прошивці мікроконтролера в єдиному екземплярі, тоді як макрос є просто зручною вставкою програмного коду у вихідний код і відповідно може призводити до значного збільшення розміру прошивкимікроконтролера. Тоді як застосування підпрограм не викликає такого збільшення прошивки, але з їх застосуванням необхідно вирішувати інші проблеми, наприклад, обмеженість діапазону виклику команди rcall в пам'яті мікроконтролера і створення острівців переходу з однієї області пам'яті мікроконтролера в іншу, що може призвести до ускладнення програмного коду.