Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000123.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
453.12 Кб
Скачать

Синтаксис:

IF <EXPR.>

<EXPR> - выражение MPALC.

Описание. Если выражение действительно, выполняется следующий собранный код. Если выражение ЛОЖНО и директива ELSE существует, выполняется следующий за директивой ELSE код. Сборка условного блока завершается директивой ENDIF.

Примеры:

IF win = = TRUE

movlw 0xF

movwf 0xA

ENDIF

_ _ _ _ _ _ _ _ _ _ _ _ _

IF VERSION = = 100

movlw 0x0A

movwf IO_1

ELSE

movlw 0x1A

movwf IO_2

ENDIF

END - конец программы или структуры

Синтаксис:

END

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

EQU - определяет константу Ассемблера

Синтаксис:

<метка> EQU <EXPR> [;<Комментарий>]

<EXPR> - выражение MPALC.

17

Описание. Величина выражения присваивается метке. Величина, определяемая директивой EQU, не может быть переопределена. (Если величина метки должна быть изменена, следует использовать директиву SET).

Пример:

FOUR EQU 4 ; Метке FOUR присваивается числовая величина 4

SET - определяет переменную Ассемблера

Синтаксис:

<метка> SET <EXPR> [;<Комментарий>]

<EXPR> - выражение MPALC.

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

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

Синтаксис:

[<метка>] ORG <EXPR> [;<Комментарий>]

<EXPR> - выражение MPALC.

Описание. Устанавливает начальный адрес программы, равный результату вычисления выражения. Если есть метка, то она получит величину <EXPR>. По умолчанию начальный адрес программы нулевой.

Пример:

List P = 16C56

Sub1 ORG 0x200

........................................

........................................

<Текст подпрограммы>

.........................................

retlw 0

(См. также директиву res).

1 8

RES - резервирование ячеек памяти

Синтаксис:

[<метка>] RES <Количество слов памяти> [;<Комментарий>]

Описание. Директива перемещает счетчик команд из его текущей позиции на величину, указанную в позициях <Количество слов памяти>. Часто директива RES используется после директивы ORG.

Пример:

Buffer RES 64 ; Резервируется 64 слова памяти

MACRO - обозначение макроопределения

Синтаксис:

<метка> MACRO [<Аргумент-1>, . . . , <Аргумент-k>] [;<Комментарий>]

Описание. Макрокоманда определяет последовательность инструкций, которая может быть включена в исходную Ассемблерную программу, используя единственное обращение к макрокоманде. Макрокоманда должна быть сначала определена с использованием формальных аргументов (имен). В дальнейшем, при вызове макрокоманды, формальные аргументы заменяются фактическими. Макрокоманда может вызывать другую макрокоманду, или может вызываться рекурсивно.

Тело макрокоманды в ее описании должно заканчиваться оператором завершения макроопределения ENDM.

В описании макрокоманды может использоваться оператор безотлагательеного завершения макрокоманды EXITM, который отменяет возможное альтернативное продолжение сборки команд и заканчивает выполнение макрокоманды, как и оператор ENDM.

Примеры:

Read MACRO device, buffer, count

MOVLW device

MOVWF RAM_20

MOVLW buffer

MOVWF RAM_21

MOVLW count

19

CALL SYS_21

ENDM

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Test MACRO Size

IF size = = 0

EXITM

ELSE

x set x+1

y set y+1

ENDIF

ENDM

LOCAL - объявляет локальные макропеременные

Синтаксис:

LOCAL <Метка-1> [,<Метка-2>, ... , <Метка-К>]

<Метка-n> - метка Ассемблера.

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

Пример:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

<сегмент основной программы>

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Length EQU 10 ;

Size EQU 20 ;

;

Test MACRO Size ;

LOCAL Length, Label ; Локальная длина

Length SET Size ; Модификация локальной длины

Label RES Length ; Резервный буфер

Length SET Length – 20 ;

ENDM ; Конец макрокоманды

2 0

LIST - опции листинга

Синтаксис:

LIST <Опция-1> [, <Опция-2> , ... , <Опция-N> ]

Описание. Опции выбираются в соответствии с их назначением согласно табл. 2.3.

Таблица 2.3

Опция

Описание и значение по умолчанию

C=<columns>

D

E=<level>

F=<type>

N=<lines>

T= (ON I OFF)

P=<part>

R=<radix>

X=<ON I OFF)

Определяет количество столбцов на страницу для листинга распечатки. С=80. Значение “columns” должно быть определено как константное выражение.

Таблица выдачи идентификаторов файла в PICESII формате (для совместимости с PICICE форматом).

Определяет уровень сообщения ошибок/предупреждений, которые нужно выводить. (Е=1). Значения уровней:

0 – сообщается все; 1 – сообщения предупреждающие,

фатальные, критические; 2 – сообщения фатальные и

критические;3 – сообщения критические.

Определяет формат объектного кода: PICICE, INHX16, INHX8S, INHX8M

Определяет количество строк на страницу для листинга распечатки. (N=51). Значение “<lines>” должно быть определено как константное выражение.

Включает или выключает листинг строки при определенной “C”- опции. Значение по умолчанию – ON, если выбран формат PICICE.

Определяет процессор, для которого произведен объектный код. (16С54). <part> может быть: 16С54, 16С55, 16С56, 16С57, 16С71 или 16С84.

Определяет основание для констант в исходном файле. (HEX). <redix> может быть: HEX, DEC, OCT

Определяет, что макрорасширение должно быть включено или выключено.

21

Следует иметь в виду, что объектный кодовый модуль и файл таблицы идентификаторов всегда производятся в шестнадцатеричном формате, независимо от опций LIST, E, F, P и R. Кроме того, опции исходной программы заместят ключи командной строки E, F, P и R.

INCLUDE - включить файл

Синтаксис:

INCLUDE “<Имя файла и путь>”

Описание. Определенный файл передается в исходную программу и подстыковывается к концу исходного файла. Разрешаются вложенные файлы, вплоть до десяти уровней вложенности. Запись <Имя файла и путь> должна быть заключена в кавычки или апострофы.

Пример:

include “C:\sys\sysdefs.inc” ; Включить файл

include “C:\sysregs.def” ;

TITLE - определяет название программы

Синтаксис:

TITLE “<Текст названия>”

Описание. <Текст названия> - строка выводимого ASCII-кода, заключенная в кавычки или апострофы. Длина строки – не более 60 символов. Директива может использоваться так часто, как этого пожелает пользователь. Строка названия обычно состоит из основного файлового имени, текста названия и номера страницы. Если страница содержит директиву SUBTITLE, то директиву TITLE можно не использовать.

Пример:

TITLE “Operational Code, Rev 5.0”

SUBTITL - определяет название программного подзаголовка

Синтаксис:

SUBTITL “<Текст подзаголовка>”

22

Описание. <Текст подзаголовка> - текстовая строка в ASCII-коде, заключенная в кавычки или апострофы, длиной не более 60 символов. Директива используется для формирования подзаголовка в листинге выхода. Нет необходимости использовать директиву TITLE, если далее идет директива SUBTITL, так как первая строка SUBTITL может содержать файловое имя, а вторая – подзаголовок.

Пример: