Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6798.pdf
Скачиваний:
69
Добавлен:
13.02.2021
Размер:
2.73 Mб
Скачать

Часть I. Процессор Cortex-M3. Программирование на ассемблере - 7

82

7Макросредства языка Assembler. Лабораторная работа № 6

Цель: научиться разрабатывать эффективный (быстро работающий) и компактный (читаемый) исходный код на языке Assembler.

7.1Введение

Макросредства языка ассемблер являются, пожалуй, самым мощным инструментальным средством этого языка. Некоторые из ассемблеров даже и называются в честь этого «макроассемблерами», хотя макро в них не на много больше чем в остальных. Что же это за такое замечательное средство?

Если коротко, то это возможность обозначать группу команд некоторой последовательностью символов и в дальнейшем работать с ней как с новой, лично вашей командой. Называться эта конструкция будет макрокомандой или макро, макросом. Слово произошло от греческого μάκρος (макрос) — большой, длинный. Синтаксис построен настолько рационально и просто, что новая команда в применении почти ничем не будет отличаться от настоящих команд – у неё также будет присутствовать и мнемокод операции и операнды.

Другими словами, ассемблер можно при желании адаптировать под себя, под решаемую вами задачу. И ещё одно важное свойство. Если вы однажды продумали и оптимизировали вашу группу команд, входящую в макро(с), то машинный код при этом будет всегда получаться наилучшим из всех возможных. Когда используется макро, нет накладных расходов на дополнительное использование вычислительных ресурсов как в случае, если бы та же группа команд была оформлена в виде отдельной функции. Но размер машинного кода при использовании макро будет больше – за всё хорошее всегда приходится чем-то платить.

Инструмент макро может быть также использован при декларировании и инициализации данных, при образовании структур.

Транслятор ассемблера работает в два прохода. Сначала раскрываются все макроопределения – работает программа-макроассемблер , а на втором проходе работает собственно сам транслятор, мнемокод преобразуется в объектный код. Следовательно, макро должно быть определено до того, как будет использовано.

7.1.1Определение макро

Вы можете определить (декларировать) макро следующими образом:

name MACRO [argument] [,argument] …

ENDM

name - имя вашей новой макрокоманды , MACRO - служебное слово (директива), argument – значения аргументов, которые могут передаваться в макрокоманду. А могут вообще и не передаваться. [] – скобки означают необязательность присутствия этих параметров. Напомним, что в документации к микроконтроллеру "Миландр" 1986ВЕ9х то же самое назначение у фигурных скобок {}, поскольку квадратные скобки используются там

для описания операндов. Ну и, наконец,

ENDM – служебное слово окончания макро.

В данной лабораторной работе могут пригодиться также следующие директивы

(служебные слова):

 

 

 

EXITM - выйти из макро;

 

 

LOCAL - создать локальный символ (метку) в макро.

 

 

 

 

 

 

 

 

 

ТУСУР, "Миландр"

Каф. ЭСАУ

Недяк С.П., Шаропин Ю.Б

Февраль 2017 г.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]