 |
Синтаксис режима MASM:
INCLUDE имя_файла
где в имени файла может задаваться дисковод, каталог или расшире-
ние. Если каталог или дисковод в имени файла не указываются, то
Турбо Ассемблер сначала ищет файлы в каталогах, заданных в пара-
метре командной строки /i, а затем в текущем каталоге.
Предопределенные идентификаторы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
В Турбо Ассемблере предусмотрено несколько предопределенных
идентификаторов, которые вы можете использовать в программах. В
разных местах этого кода эти идентификаторы могут иметь различное
значение. Они аналогичны строковым присваиваниям, выполняемым по
директиве EQU. Когда Турбо Ассемблер обнаруживает в исходном фай-
ле один из этих идентификаторов, он заменяет его текущим значени-
ем данного предопределенного идентификатора.
Некоторые из этих идентификаторов представляют собой тексто-
вые (строковые) присваивания, другие - числовые присваивания, а
третьи являются псевдонимами. Строковые значения могут использо-
ваться в любом месте, где допускается использование текстовых
строк, например, для инициализации последовательности байтовых
данных с помощью директивы DB:
NOW DB ??time
Числовые предопределенные значения можно использовать в лю-
бом месте, где допустимо использование числа:
IF ??version GT 100h
Значения-псевдонимы превращают предопределенные идентифика-
торы в синоним представляемого значения, что позволяет использо-
вать имя предопределенного идентификатора в любом месте, где
можно использовать обычное имя идентификатора:
ASSUME cs:@code
Все предопределенные идентификаторы могут использоваться как
в режиме MASM, так и в режиме Ideal.
Если вы при ассемблировании используете параметр командной
строки /ml, то предопределенные идентификаторы нужно использовать
в точности так, как они описаны ниже (соблюдая регистр символов).
К идентификаторам, начинающимся с символа @, применимо сле-
дующее правило: первая буква каждого слова, которое составляет
имя идентификатора, указывается в верхнем регистре (кроме имен
сегментов), а остальная часть слова - в нижнем. Например:
Турбо Ассемблер 3.0/tasm/#1-2 = 67 =
@FileName
Заметим, что @FileName представляет собой присваивание
псевдонима для текущей ассемблируемой строки.
Исключением являются переопределенные идентификаторы, кото-
рые ссылаются на сегменты. Имена сегментов начинаются с символа @
и записываются символами в нижнем регистре. Например:
@curseg
@fardata
У идентификаторов, начинающихся с двух вопросительных знаков
(??), все буквы должны быть в нижнем регистре, например:
??date
??version
Заметим, что идентификатор ??date определяет текстовое прис-
ваивание, которое представляет текущую дату. Точный формат строки
даты определяется кодом страны, установленным в DOS. Идентифика-
тор ??version позволяет вам писать исходные файлы, использующие
средства различных версий Турбо Ассемблера. Это присваивание поз-
воляет вам также определить, ассемблируется ли исходный файл с
помощью MASM или с помощью Турбо Ассемблера, поскольку идентифи-
катор ??version в MASM не определен. Аналогично, ??filename опре-
деляет строку из 8 символов, представляющую собой имя текущего
ассемблируемого файла. Если имя файла содержит менее 8 символов,
то оно дополняется пробелами. Идентификатор ??time определяет
текстовое присваивание, которое представляет текущее время. Точ-
ный формат строки времени определяется кодом страны, установлен-
ным в DOS.
Присваивание идентификаторам значений
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Турбо Ассемблер предоставляет две директивы, которые позво-
ляют присвоить идентификатору значение: EQU и =. Директива EQU
определяет строковое присваивание, присваивание псевдонима или
числовое присваивание. Она имеет следующий синтаксис:
имя EQU выражение
где "имени" присваивается результат вычисления выражения. "Имя"
должно быть новым идентификатором, который ранее подобным образом
не определялся. Если первое определение представляло собой стро-
ковое присваивание, в режиме MASM вы можете только переопреде-
лить идентификатор, определенный по директиве EQU. В режиме MASM
EQU может генерировать любой из трех видов присваиваний: строко-
вое, числовое или присваивание псевдонима.
Директива = определяет только числовое присваивание. Она
Турбо Ассемблер 3.0/tasm/#1-2 = 68 =
имеет синтаксис:
имя = выражение
где "имени" присваивается результат вычисления выражения, при вы-
числении которого должна получаться константа или адрес в сегмен-
те. "Имя" может быть новым идентификатором или идентификатором,
уже определенным ранее по директиве =. Поскольку директива = име-
ет намного более предсказуемое поведение, чем директива EQU в ре-
жиме MASM, по возможности используйте директиву EQU.
Общая структура модуля
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
В Турбо Ассемблере имеется несколько директив, которые помо-
гают вам работать с модулями кода. Эти директивы описываются в
оставшейся части данной главы.
Директива VERSION
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Использование директивы VERSION позволяет вам определить,
для какой версии Турбо Ассемблера или MASM вы пишете конкретные
модули. Это полезно использовать для совместимости (снизу вверх
или наоборот) различных версий TASM и MASM. Директива VERSION
также переводит вас в режим работы заданной версии.
Директиву VERSION вы можете указывать как в виде параметра
командной строки, так и в исходном коде программы.
В исходном коде она имеет следующий синтаксис:
VERSION <идентификатор_версии>
Допускается задавать следующие идентификаторы версии:
M400 MASM 4.0
M500 MASM 5.0
M510 MASM 5.1
M520 MASM 5.2 (Quick ASM)
T100 Турбо Ассемблер 1.0
T101 Турбо Ассемблер 1.01
T200 Турбо Ассемблер 2.0
T250 Турбо Ассемблер 2.5
T300 Турбо Ассемблер 3.0
При использовании данной директивы в командной строке ис-
пользуется следующий синтаксис:
/U<номер_версии>
Например, если вы хотите ассемблировать программу, написан-
ную для MASM 5.0, то можно не изменять исходный код и указать в
Турбо Ассемблер 3.0/tasm/#1-2 = 69 =
командной строке параметр /uM510.
Здесь действуют следующие правила:
1. Директива VERSION по умолчанию всегда выбирает режим
MASM, поскольку это начальный режим работы как для MASM,
так и для Турбо Ассемблера.
2. Директива VERSION ограничивает высокоприоритетные ключе-
вые слова теми словами, которые доступны для заданного
компилятора и версии, В результате некоторые средства,
которые были добавлены в последние версии, будут вам не-
доступны.
3. Если в режиме Ideal вы выбираете версию < T300, то дирек-
тива VERSION вам недоступна. В этом случае, чтобы исполь-
зовать директиву VERSION, вы должны сначала переключиться
в режим MASM.
В предыдущих версиях Турбо Ассемблера совместимость с MASM
обеспечивалась с помощью таких директив, как MASM51, MOMASM51,
QUIRKS, SMART и NOSMART. Вместо этих директив используется теперь
директива VERSION. Полное описание ключевых слов, доступных в
каждой предыдущей версии Турбо Ассемблера, можно найти в Приложе-
нии B.
Директива NAME
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Используйте директиву NAME для задания имени модуля объект-
ного файла. Она имеет следующий синтаксис:
NAME имя_модуля
|