Макрос в асемблер на примера на AVR

Макрое набор от команди и инструкции, които са групирани в една команда за автоматизиране на програмни задачи, ускоряване на често извършвани действия за редактиране и форматиране.

Също такаМакроси могат да се използват за ускоряване на разработката на софтуер за микроконтролери на езика за програмиранеAssembler. По време на компилацияМакроси се заменят с последователности от команди на микроконтролера. Такъв подход към програмирането улеснява разбирането на програмния код, намалява размера на изходните кодове и доближава програмирането вAssembler по външен вид до езика за програмиранеC.

Макро запис

Макросът на езика за програмиране Assembler се състои от следните части:

Макро запис за AVR микроконтролер може да изглежда така:

Прилагането на тозиМакро ще изглежда така:

В този случайMacro се извиква с името сиouti. Първото място@0 е регистърътDDRB,а второто@1 е променливата0b01111111, която се записва в този регистър. Тоест, всъщност приложението на макроса изглежда така:

В процеса на компилиране на програмния код препроцесорът извършва заместване на данни в макроса и тяхното капсулиране в програмния код. Макросът в този случай е подобен на функция или подпрограма, която се извиква от командатаrcall (или други), с тази разлика, че подпрограмите, извикани от командатаrcall могат да присъстват във фърмуера на микроконтролера в едно копие, докато макросът е просто удобно вмъкване на програмен код в изходния код и съответно може да доведе до значително увеличаване на размера на фърмуерамикроконтролер. Въпреки че използването на подпрограми не води до такова увеличение на фърмуера, е необходимо да се решат други проблеми с тяхното използване, например ограниченият обхват на извикване на командата rcall в паметта на микроконтролера и, съответно, създаването на преходни острови от една област на паметта на микроконтролера към друга, което може да доведе до усложняване на програмния код.