|
||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Директивы языкаДирективы языка – это ассемблерные команды, которые встречаются в исходном коде, но не транслируются прямо в исполняемые коды. Они используются ассемблером при трактовке мнемоники входного файла, размещении данных и формировании файла листинга. Существует четыре основных типа директив в MPASM:
Директивы данных управляют распределением памяти и обеспечивают доступ к символическим обозначениям данных. Директивы листинга управляют листингом файла MPASM и форматом. Они определяют спецификацию заголовков, генерацию страниц и другие функции управления листингом. Директивы управления позволяют произвести секционирование обычного ассемблерного кода. Макро-директивы управляют исполнением и распределением данных в пределах определений макротела. Ниже приводится описание некоторых директив ассемблера MPASM, используемых в данном учебном пособии. CODE – начало секции объектного кода Синтаксис: [<label>] code [ROM address>]Используется при генерации объектных модулей. Объявляет начало секции программного кода. Если <label> не указана, секция будет названа code. Стартовый адрес устанавливается равным указанному значению или нулю, если адрес не был указан. Пример: RESET code H'01FF' goto START#DEFINE – определить метку замены текста Синтаксис: #define <name> [<string>]Директива задает строку <string>, замещающую метку <name> всякий раз, когда та будет встречаться в исходном тексте. Символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Используйте вместо этой директивы EQU. Пример #define length 20#define control 0x19,7#define position (X,Y,Z) (y-(2 * Z +X)).test_label dw position(1, length, 512)bsf control; установить в 1 бит 7 в f19END – конец программного блока Синтаксис: endОпределяет конец программы. После остановки программы таблица символов сбрасывается в файл листинга. Пример: start;исполняемый код;end; конец программыEQU – определить ассемблерную константу Синтаксис: <label> equ <expr>Здесь <expr> – это правильное MPASM выражение. Значение выражения присваивается метке <label>. Пример: four equ 4; присваивает численное значение; метке fourINCLUDE – включить дополнительный файл источника Синтаксис: include <<include_file>>include "<include_file>"Определяемый файл считывается как источник кода. По окончании включаемого файла будет продолжаться ассемблирование исходника. Допускается до шести уровней вложенности. <include_file> может быть заключен в кавычки или угловые скобки. Если указан полный путь к файлу, то поиск будет происходить только по этому пути. В противном случае порядок поиска следующий: текущий рабочий каталог, каталог, в котором находится исходник, каталог MPASM. Пример: include "c:\sys\sysdefs.inc"; system defsinclude <addmain.asm>; register defsLIST – установить параметры листинга Синтаксис: list [<list_option>,, <list_option>]Директива <list> разрешает вывод листинга, если он до этого был запрещен. Кроме того, один из параметров листинга может быть изменен для управления процессом ассемблирования в соответствии с табл. 6.5.
NOLIST – выключить выход листинга Синтаксис: NOLISTORG – установить начальный адрес программы Синтаксис: <label> org <expr>Устанавливает начальный адрес программы для последующего кода в соответствии с адресом в <expr>. MPASM выводит перемещаемый объектный код, а MPLINK разместит код по определенному адресу. Если метка <label> определена, то ей будет присвоена величина <expr>. По умолчанию начальный адрес имеет нулевое значение. Директива может не использоваться, если создается объектный модуль. Пример: int_1 org 0x20; Переход по вектору 20int_2 org int_1+0x10; Переход по вектору 30PROCESSOR – установить тип процессора Синтаксис: processor <processor_type>Устанавливает тип используемого процессора <processor_type>: [16C54 | 16C55 | 16C56 | 16C57 | 16C71 | 16C84 | 16F84 | 17C42]. Общие процессорные семейства могут быть выбраны как:[16C5X | 16CXX | 17CXX] Для поддержания совместимости с новыми изделиями выбирается максимум доступной памяти. SET – определить ассемблерную переменную Синтаксис: <label> set <expr>Директива SET функционально эквивалентна директиве EQU, за исключением того, что величина, определяемая SET, может быть изменена директивой SET. Пример: area set 0widthset 0x12length set 0x14area set length * widthlength set length + 1TITLE – Определить программный заголовок Синтаксис: title "<title_text>"Эта директива устанавливает текст, который используется в верхней линии страницы листинга. <title_text> - это печатная ASCII последовательность, заключенная в двойные скобки. Она может быть до 60 символов длиной. Пример Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |