Лекция: Директивы языка

Директивы языка – это ассемблерные команды, которые встречаются в исходном коде, но не транслируются прямо в исполняемые коды. Они используются ассемблером при трактовке мнемоники входного файла, размещении данных и формировании файла листинга.

Существует четыре основных типа директив в MPASM:

  • директивы данных;
  • директивы листинга;
  • управляющие директивы;
  • макро-директивы.

Директивы данных управляют распределением памяти и обеспечивают доступ к символическим обозначениям данных.

Директивы листинга управляют листингом файла MPASM и форматом. Они определяют спецификацию заголовков, генерацию страниц и другие функции управления листингом.

Директивы управления позволяют произвести секционирование обычного ассемблерного кода.

Макро-директивы управляют исполнением и распределением данных в пределах определений макротела.

Ниже приводится описание некоторых директив ассемблера MPASM, используемых в данном учебном пособии.

CODE – начало секции объектного кода

Синтаксис:

Используется при генерации объектных модулей. Объявляет начало секции программного кода. Если <label> не указана, секция будет названа code. Стартовый адрес устанавливается равным указанному значению или нулю, если адрес не был указан.

Пример:

#DEFINE – определить метку замены текста

Синтаксис:

Директива задает строку <string>, замещающую метку <name> всякий раз, когда та будет встречаться в исходном тексте.

Символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Используйте вместо этой директивы EQU.

Пример

END – конец программного блока

Синтаксис:

Определяет конец программы. После остановки программы таблица символов сбрасывается в файл листинга.

Пример:

EQU – определить ассемблерную константу

Синтаксис:

Здесь <expr> – это правильное MPASM выражение. Значение выражения присваивается метке <label>.

Пример:

INCLUDE – включить дополнительный файл источника

Синтаксис:

Определяемый файл считывается как источник кода. По окончании включаемого файла будет продолжаться ассемблирование исходника. Допускается до шести уровней вложенности. <include_file> может быть заключен в кавычки или угловые скобки. Если указан полный путь к файлу, то поиск будет происходить только по этому пути. В противном случае порядок поиска следующий: текущий рабочий каталог, каталог, в котором находится исходник, каталог MPASM.

Пример:

LIST – установить параметры листинга

Синтаксис:

Директива <list> разрешает вывод листинга, если он до этого был запрещен. Кроме того, один из параметров листинга может быть изменен для управления процессом ассемблирования в соответствии с табл. 6.5.

Таблица 6.5. Параметры, используемые директивой list.
Параметр Значение по умолчанию Описание
C=nnn Количество символов в строке
n=nnn Количество строк на странице
t=ON|OFF OFF Укорачивать строки листинга
p=<type> None Установить тип процессора: PIC16C54, PIC16C84, PIC16F84, PIC17C42 и др.
r=<radix> HEX Установить систему счисления по умолчанию: hex, dec, oct.
w=<level> Установить уровень сообщений диагностики в файле листинга: 0 – выводить все сообщения; 1 – выводить предупреждения и ошибки; 2 – выводить только ошибки.
x=ON|OFF OFF Включить или выключить макрорасширения.

NOLIST – выключить выход листинга

Синтаксис:

ORG – установить начальный адрес программы

Синтаксис:

Устанавливает начальный адрес программы для последующего кода в соответствии с адресом в <expr>. MPASM выводит перемещаемый объектный код, а MPLINK разместит код по определенному адресу. Если метка <label> определена, то ей будет присвоена величина <expr>. По умолчанию начальный адрес имеет нулевое значение. Директива может не использоваться, если создается объектный модуль.

Пример:

PROCESSOR – установить тип процессора

Синтаксис:

Устанавливает тип используемого процессора <processor_type>: [16C54 | 16C55 | 16C56 | 16C57 | 16C71 | 16C84 | 16F84 | 17C42]. Общие процессорные семейства могут быть выбраны как:[16C5X | 16CXX | 17CXX]

Для поддержания совместимости с новыми изделиями выбирается максимум доступной памяти.

SET – определить ассемблерную переменную

Синтаксис:

Директива SET функционально эквивалентна директиве EQU, за исключением того, что величина, определяемая SET, может быть изменена директивой SET.

Пример:

TITLE – Определить программный заголовок

Синтаксис:

Эта директива устанавливает текст, который используется в верхней линии страницы листинга. <title_text> — это печатная ASCII последовательность, заключенная в двойные скобки. Она может быть до 60 символов длиной.

Пример

еще рефераты
Еще работы по информатике