Директивы ассемблера
Директивы ассемблера поставляют данные программе и управляют процессом трансляции. Директивы ассемблера дают возможность Вам делать следующее:
· Транслировать код и данные в указанные разделы.
· Резервировать пространство в памяти для неинициализированных переменных.
· Управлять видом листинга.
· Инициализировать память.
· Транслировать условные блоки.
· Определять глобальные переменные.
· Определять библиотеки, из которых ассемблер может получить макрокоманды.
· Исследовать информацию о символьной отладке.
Внимание: Метки и комментарии не показаны в синтаксисе.
Любая исходная инструкция, которая содержит директиву, может также содержать метку и комментарий. Метки начинаются в первом столбце (они - единственные элементы, кроме комментариев, которые могут появляться в первом столбце), а комментарии должны начинаться с точки с запятой или звездочки, если комментарий - единственный элемент в строке. Чтобы улучшать разборчивость, метки и комментарии не показываются, как часть синтаксиса директив. В описании части, заключенные в квадратные скобки, могут пропускаться, ассемблер будет их задавать по умолчанию.
· Разделы
Мнемоника и синтаксис | Описание |
.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 значение | Приравнивает значение символу. |
· Разные директивы