Директивы ассемблера

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

· Транслировать код и данные в указанные разделы.

· Резервировать пространство в памяти для неинициализированных переменных.

· Управлять видом листинга.

· Инициализировать память.

· Транслировать условные блоки.

· Определять глобальные переменные.

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

· Исследовать информацию о символьной отладке.

Внимание: Метки и комментарии не показаны в синтаксисе.

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

· Разделы

Мнемоника и синтаксис Описание
.bss символ, размер в словах [, флаг блокировки [, флаг выравнивания [, тип]] Резервирует пространство в разделе .bss (неинициализированные данные)
.data Транслирует в раздел .data (инициализированные данные).  
.sect ”имя раздела” Транслирует в названный (инициализированный) раздел
.text Транслирует в раздел .text (выполняемый код)
символ .usect ”имя раздела”, размер в словах [, флаг блокировки[, флаг выравнивания] Резервирует пространство в названном разделе (неинициализированном)

· Константы

Мнемоника и синтаксис Описание
.byte значение1[,..., значениеN] Заносит в 16-разрядные слова байты из списка. В слово 1 байт в младшую часть.
.char значение1[,..., значениеN] Заносит в 16-разрядные слова символы из списка. В слово 1 символ в младшую часть.
.string {выражение ”строка”} Текстовые строки. Заносятся символы строки в младшие байты последовательных слов. То же самое делает .char со списком символов.
.pstring {выраж.1 ”строка1”} [,…,{выраж.N ”строкаN”}] Аналог .string. Заносятся символы строки в оба байта последовательных слов.
.field значение[, размер] Инициализирует подполя в константе размером 16 бит. Для каждого подполя задаются значение и размер. При последовательном применении константа заполняется справа налево. Применяется для упаковки нескольких значений в одном месте.
.int значение1[,...,значениеN] Заносит в 16-разрядные слова 16-разрядные целые числа из списка. Есть выравнивание по границам слов.
.longзначение1 [,...,значениеN] Заносит в 16-разрядные слова 32-разрядные целые числа из списка. На одно значение 2 слова. Есть выравнивание по границам слов.
.xlongзначение1 [,...,значениеN] То же, что .long. Нет выравнивания по границам слов.
.word значение1 [,...,значениеN] Заносит в 16-разрядные слова 16-разрядные числа из списка. Есть выравнивание по границам слов.
.float значение1[,...,значениеN] Заносит в 16-разрядные слова 32-битные константы с ПТ, IEEE с однократной точностью из списка. На одно значение 2 слова. Есть выравнивание по границам слов.
.xfloat значение1 [,...,значениеN] То же, что .flooat. Нет выравнивания по границам слов.

· Выравнивания

Мнемоника и синтаксис Описание  
.align [размер в словах] Выравнивает SPC на границе, указанной размером в байтах, который должен быть степенью 2; по умолчанию – до границы
.bes [размер в битах] Резервирует биты в текущем разделе. Метка указывает на конец резервируемого пространства
.space [размер в битах] Резервирует биты в текущем разделе. Метка указывает на начало резервируемого пространства

· Листинг

Мнемоника и синтаксис Описание  
.drlist Допускает распечатку всех строк директив (по умолчанию).
.drnolist Подавляет распечатку определенных строк директив.
.fclist Позволяет распечатку ложного условного блока (по умолчанию).
.fcnolist Подавляет распечатку ложного условного блока кода.
.length [длина страницы] Устанавливает длину страницы листинга программы
.list Повторный запуск распечатки программы
.mlist Позволяет распечатку макрокоманд и блоков циклов(по умолчанию)
.mnolist Подавляет распечатку макрокоманд и блоков циклов
.nolist Останавливает распечатку программы
.option опция1 [, опция2,...] Выбирает опции листинга; доступны опции - A,B,D,H,L,М,N,O,R,T,W и X
.page Пропускает страницу в распечатке программы
.sslist Позволяет расширенный листинг символов замены
.ssnolist (по умолчанию) Подавляет расширенный листинг символов замены
.tab размер Устанавливает размер знаков табуляции (в символах)
.title “строка” Печатает заголовок в начале страницы листинга
.width [ширина страницы] Устанавливает ширину страницы распечатки программы

· Файлы

Мнемоника и синтаксис Описание  
.copy [“]имя файла[“] Включает исходные инструкции из другого файла
.def символ1 [,...,символN] Идентифицирует один или более символов, которые определены в текущем модуле и могут использоваться в других модулях
.global символ1 [,...,символN] Идентифицирует один или более глобальных символов
.include [“]имя файла[“] Включает исходные инструкции из другого файла
.mlib [“]имя файла[“] Определяет библиотеку макрокоманд
.ref символ1 [,...,символN] Идентифицирует один или более символов, используемых в текущем модуле, которые определены в другом модуле

· Условная трансляция

Мнемоника и синтаксис Описание  
.break [четкое выражение] Заканчивает трансляцию .loop, если четкое выражение - истина. При использовании конструкции .loop, конструкция .break - необязательна
.else Транслирует блок кода, если (.if четкое выражение) является ложным. При использовании конструкции .if, конструкция .elsе необязательна
.elseif четкое выражение Транслирует блок, если .if четкое выражение является ложным, а условие .elseif - истинно. При использовании конструкции .if , конструкция .elseif - необязательна
.endif Заканчивает блок кода .if
.endloop Заканчивает блок кода .loop
.if четкое выражения Транслирует блок, если четкое выражение является истинным
.loop [четкое выражение] Начинает повторяемую трансляцию кодового блока; счетчик цикла определен четким выражением

· Структуры

Мнемоника и синтаксис Описание
.struct Начало структуры. Это коллекция однотипных данных. Для данных, используемых совместно в исходниках Ассемблера и языка С++.
.cstruct Начало структуры с выравниванием и размещением. Для данных, используемых совместно в исходниках Ассемблера и языка С++.
.endstruct Конец структуры.
.union Начало юниона. Это коллекция разнотипных данных. Для данных, используемых совместно в исходниках Ассемблера и языка С++.
.endunion Конец юниона.
.tag Приписывает атрибуты структуры метке

· Символы во время трансляции

Мнемоника и синтаксис Описание  
.asg [“]строка знаков[“], символ замены Назначает строку знаков символу замены
.eval четкое выражение, символ замены Исполняет арифметику на числовом символе замены.
.label символ Определяет переместимую во время загрузки метку в разделе.
символ .set значение Приравнивает значение символу.

· Разные директивы