Проектирование средств контроля и диагностики с элементами высокой интеграции. Голубков В.А - 16 стр.

UptoLike

14
тело макроса
ENDM
Параметры макроса являются необязательными. При обработке
исходного текста макроассемблером MPASM вместо вызова макроопределения
подставляется тело макроса с параметрами из строки вызова. Вызов макроса
осуществляется следующим образом:
<имя_макроса> параметр1, параметр2, …
Пример работы с макросом:
EXAMPLE MACRO PAR ; Определение макроса
MOVLW PAR
ENDM
; Вызов макроса
EXAMPLE 40 при ассемблировании => MOVLW 40
Заметим, что внутри макроопределения нельзя использовать
метки, так
как при нескольких его вызовах произойдет их дублирование в тексте
программы. Для переходов внутри макроса удобно использовать символ $,
обозначающий адрес текущей команды. К примеру, $-1 задает адрес
предыдущей команды. Заметим, что символ $ можно использовать не только в
макросах, но и в любом другом месте программы.
Приведем пример программы, выполняющей
опрос кнопки на выводе
RB4, и изменяющей процесс вычислений, если кнопка нажата:
#INCLUDE “P16F877.INC”
BITS EQU 20 ; Буферный регистр
COUNT EQU 21 ; Задаем символьное обозначение ячейки
; памяти, расположенной по адресу 21h
DELAY MACRO TIME_OF_DELAY ; Макрос с задержкой
(TIME_OF_DELAY+1)*3
MOVLW TIME_OF_DELAY ; Заносим параметр в аккумулятор
MOVWF COUNT ; Переписываем в ячейку памяти
DECFSZ COUNT, F ; Декрементируем содержимое ячейки
; счетчика
GOTO $-1 ; Передача управления предыдущей
; команде
ENDM ; Конец
макроса
ORG 0 ; Программа начинается с адреса 0