
- •Трансляция программы
- •Компоновка программы
- •Система команд микропроцессора
- •32 Разрядные регистры:
- •Целочисленные арифметические команды
- •Особенности реализации микропроцессоров
- •Регистры: пользовательские и системные
- •Программа на языке ассемблера
- •Цепочечные команды
- •Осуществление переходов
- •Счётчик адреса команд
- •Безусловные переходы
- •Команда безусловного перехода jmp
- •Защищённый режим работы микропроцессора
- •Регистры управления
- •Регистры системных адресов
- •Сложные структуры данных
- •Доступ к элементам массива
- •Двумерные массивы
- •Структура
- •Сложные структуры данных 2
- •Методы работы со структурой
- •Объединение
- •Модульное программирование -1
- •Технологии программирования
- •Процедуры в языке ассемблера
- •Модульное программирование – 2 Передача аргумента через регистр
- •Передача аргументов через общую область памяти
- •Передача аргументов через стек
- •Связь ассемблера с языками высокого уровня
- •Макросредства языка ассемблера
- •Создание Windows приложений на ассемблере
- •Процесс производства микропроцессора
Макросредства языка ассемблера
Макрокоманда представляет собой развитие механизма замена текста
С помощью макрокоманд текст программ можно вставлять в последовательности строк, которые логически могут быть данными или командами и привязать их к контексту места вставки ситуации наличия повторяющихся участков кода, либо необходимости выполнения одинаковых действий можно оформить в виде макрокоманд и использовать эти фрагменты в других программах.
Макрокоманда представляет собой строку , содержащую некое символическое имя, предназначенную для того, чтобы быть замещённой одной или несколькими другими строками. Имя макрокоманды может сопровождаться параметрами. При возникновении необходимости использования макрокоманд и отсутствие её необходимо задать шаблон описания, который называется макроопределением
Синтаксис макроопределения
Имя_макрокоманды macro список_форм_аргум
Тело_макроопределения
Endm
Существует 3 варианта расположения макроопределения:
в начале исходного текста программы до сегмента кода и данных с тем, чтобы не ухудшать читабельность программы. Этот вариант применяется, когда отдельные макрокоманды актуальны в пределах только одной программы
в отдельном файле. Этот вариант подходит при работе над несколькими программами одной предметной области. Чтобы сделать доступными эти макроопределения конкретной программе, необходимо в начале исходного текста написать директиву include.
Include имя_файла
в макро-библиотеке.
Недостаток второго и третьего способа в том, что в исходный текст программы включаются абсолютно все макроопределения. Для исправления ситуации можно использовать директиву purge, в качестве операндов которой через запятую перечисляются имена макрокоманд, которые недолжны включатся в текст программы.
Функционально макрокоманды похожи на процедуры. Отличия можно рассматривать как достоинства, так и недостатки.
В отличие от процедуры, текст которой неизменен, макроопределение в процессе макрогенерации может манятся в соответствии с фактическим набором параметров. При этом коррекции могут подвергаться как операнды команд, ток и сами команды
При каждом вызове макрокоманды её текст в виде макрорасширения вставляется в программу.
При вызове процедуры микропроцессор осуществляет передачу управления на начало процедуры. Находящийся в некоторой области памяти в одном экземпляре. Код в этом случае получается более компактным, а быстродействие снижается.
Макроопределения обрабатывается компилятором особым образом. Для того чтобы использовать описанное макроопределение в нужном месте программы, оно должно быть активизировано с помощью макрокоманды
Имя_макрокоманды список_факт_аргум
Обычно макрокоманда содержит некоторый список аргументов которым корректируется макроопределение. Места в теле макроопределения, которые будут замещается фактическими аргументами из макрокоманды, обозначены с помощью формальных аргументов.
В результате применения макрокоманды в программе формальные аргументы в макроопределении будут замещаться соответствующими фактическими аргументами. В этом заключается учёт контекста. Процесс такого замещения называется макрогенерацией, а результатом является макрорасширение.
Каждый фактический аргумент представляет строку символов, для формирования которой применяются следующие правила:
Строка может состоять из:
Последовательности символов без пробелов, точек, запятых, точек с запятой
Последовательности любых символов заключённые в угловые скобки. В этой последовательности, заключённые в угловые скобки можно указывать как проблемы, так и точки, запятые и т.д.
Для того, чтобы указать, что некоторый символ внутри строки, представляющей фактический параметр, является собственно символом, применяется специальный оператор «!». Этот оператор ставится перед описанным выше символом и его действия эквивалентно заключению символа в угловые скобки
Если требуется вычисление в строке некоторого константного выражения, то в начале этого выражения ставится «%».