Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК_МашЗавЯП_А4.doc
Скачиваний:
157
Добавлен:
10.06.2015
Размер:
19.94 Mб
Скачать
    1. Директивы ассемблера

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

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

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

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

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

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

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

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

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

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

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

  • Разделы

    Мнемоника и синтаксис

    Описание

    .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 значение

    Приравнивает значение символу.

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

Мнемоника и синтаксис

Описание

.asmfunc

Начало блока кода для функции

. cdecls [options,]"filename"

[, "filename2"[, ...]

Согласование дескрипторов для кодов C и ассемблера.

.clink [”имя раздела”]

Допускает условную компоновку для текущего или указанного раздела

.emsg строка

Посылает определяемые пользователем сообщения об ошибке устройству вывода; не производит объектный файл

.end

Заканчивает программу

.endasmfunc

Конец блока кода для функции

.mmsg строка

Посылает определяемые пользователем сообщения устройству вывода

.newblock

Снимает определение локальных меток

.sblock

Создание раздела блокирования

.wmsg строка

Посылает определяемые пользователем предупреждающие сообщения устройству вывода

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]