Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LK_MashZavYP_Akchurin_2011.pdf
Скачиваний:
190
Добавлен:
10.06.2015
Размер:
8.79 Mб
Скачать

Названные разделы - разделы, которые Вы создаете. Вы можете использовать их подобно заданным по умолчанию .text, .data, и .bss разделам, но они транслируются отдельно. Например, повторное использование .text директивы создает единый .text раздел в объектном файле. Во время компоновки этот .text раздел распределяется в памяти как одиночный модуль. Предположим, что имеется часть выполняемого кода (возможно подпрограмма инициализации), которую Вы не хотите размещать вместе с .text. Если Вы размещаете этот сегмент кода в названном разделе, он транслируется отдельно от .text, и Вы можете распределять его в памяти отдельно. Вы можете также транслировать инициализированные данные, который отличны от .data раздела, и Вы можете резервировать пространство для неинициализированных переменных, которые отличны от .bss раздела.

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

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

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

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

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

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

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

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

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

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

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

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

425

8.8.1. Разделы

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

 

 

Описание

.bss символ, размер в словах [,

 

Резервирует пространство в разделе .bss

флаг блокировки

 

 

(неинициализированные данные)

[, флаг выравнивания [, тип]]

 

 

 

.data

 

 

 

Транслирует в раздел .data (инициализиро-

 

 

 

 

ванные данные).

 

 

 

 

.sect ”имя раздела”

 

 

Транслирует в названный (инициализиро-

 

 

 

 

ванный) раздел

.text

 

 

 

Транслирует в раздел .text (выполняемый

 

 

 

 

код)

символ .usect ”имя раздела”,

 

Резервирует пространство в названном раз-

размер в словах

 

 

деле (неинициализированном)

[, флаг блокировки[, флаг

 

 

выравнивания]

 

 

 

8.8.2. Константы

 

 

 

 

 

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

Описание

.byte

значение1[,...,

Заносит в 16-разрядные слова байты из списка.

значениеN]

 

В слово 1 байт в младшую часть.

.char

значение1[,...,

Заносит в 16-разрядные слова символы из спи-

значениеN]

 

ска.

 

 

 

В слово 1 символ в младшую часть.

.string

{выражение

Текстовые строки.

”строка”}

 

Заносятся символы строки в младшие байты по-

 

 

следовательных слов.

 

 

То же самое делает .char со списком символов.

.pstring {выраж.1 ”строка1”}

Аналог .string.

[,…,{выраж.N ”строкаN”}]

Заносятся символы строки в оба байта последо-

 

 

вательных слов.

.field значение[, размер]

Инициализирует подполя в константе размером

 

 

16 бит.

 

 

Для каждого подполя задаются значение и раз-

 

 

мер.

 

 

 

При

последовательном применении константа

 

 

заполняется справа налево.

426

 

 

 

 

 

Применяется для упаковки нескольких значений в

 

 

 

 

 

одном месте.

.int

 

 

 

 

Заносит в 16-разрядные слова 16-разрядные це-

значение1[,...,значениеN]

 

лые числа из списка.

 

 

 

 

 

Есть выравнивание по границам слов.

.longзначение1

 

 

 

Заносит в 16-разрядные слова 32-разрядные це-

[,...,значениеN]

 

 

 

лые числа из списка.

 

 

 

 

 

На одно значение 2 слова. Есть выравнивание по

 

 

 

 

 

границам слов.

.xlongзначение1

 

 

 

То же, что .long.

[,...,значениеN]

 

 

 

Нет выравнивания по границам слов.

.word

 

значение1

 

Заносит в 16-разрядные слова 16-разрядные чис-

[,...,значениеN]

 

 

 

ла из списка.

 

 

 

 

 

Есть выравнивание по границам слов.

.float

 

 

 

 

Заносит в 16-разрядные слова 32-битные кон-

значение1[,...,значениеN]

 

станты с ПТ, IEEE с однократной точностью из

 

 

 

 

 

списка.

 

 

 

 

 

На одно значение 2 слова. Есть выравнивание по

 

 

 

 

 

границам слов.

.xfloat

 

значение1

 

То же, что .flooat.

[,...,значениеN]

 

 

 

Нет выравнивания по границам слов.

8.8.3. Выравнивания

 

 

 

Мнемоника

и

Описание

синтаксис

 

 

 

 

.align

[размер

в

Выравнивает SPC на границе, указанной размером в

словах]

 

 

байтах, который должен быть степенью 2; по

 

 

 

умолчанию – до границы

.bes [размер в битах]

Резервирует биты в текущем разделе. Метка указыва-

 

 

 

ет на конец резервируемого пространства

.space

[размер в

Резервирует биты в текущем разделе. Метка указыва-

битах]

 

 

ет на начало резервируемого пространства

8.8.4. Листинг

 

 

 

 

 

 

Мнемоника

и

Описание

синтаксис

 

 

 

 

.drlist

 

 

Допускает распечатку всех строк директив (по умолча-

 

 

 

нию).

 

 

 

 

 

 

427

.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

[ширина

Устанавливает ширину страницы распечатки програм-

страницы]

мы

8.8.5. Файлы

Мнемоника

и

Описание

синтаксис

 

 

.copy [“]имя файла[“]

Включает исходные инструкции из другого файла

.def

символ1

Идентифицирует один или более символов, которые

[,...,символN]

 

определены в текущем модуле и могут использовать-

 

 

ся в других модулях

.global

символ1

Идентифицирует один или более глобальных симво-

[,...,символN]

 

лов

.include [“]имя файла[“]

Включает исходные инструкции из другого файла

.mlib [“]имя файла[“]

Определяет библиотеку макрокоманд

.ref

символ1

Идентифицирует один или более символов, исполь-

[,...,символN]

 

зуемых в текущем модуле, которые определены в

 

 

другом модуле

428

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