Глава 3. Справочник по командной строке.


Данная глава посвящается знакомству с опциями командной
строки Turbo Assembler. Будет описана каждая опция командной
строки и ее использование для изменения поведения ассемблера, а
затем показано применение командных файлов. И наконец, дается
описание файла конфигурации.

Запуск Turbo Assembler из DOS
——————————————————————

Turbo Assembler имеет очень мощный и гибкий синтаксис
командной строки. Если при запуске Turbo Assembler не задать
никаких аргументов, например,

TASM

то вам будет выдан экран со вспомогательным описанием многих
опций командной строки и синтаксиса для задания ассемблируемых
файлов. На рис.3.1 показан этот экран.

Turbo Assembler Version 2.0 Copyright (C) 1988, 1990 by Borland
International, Inc.

Syntax: TASM [options] source [,object] [,listing] [,xref]

(Синтаксис: TASM [опции] исх_файл [,объектный] [,листинга]
[,перекрестных_ссылок])

/a,/s Упорядочивание сегментов по алфавиту или в
последовательности их расположения в исходном файле.

/c Генерирование в листинге таблицы перекрестных
ссылок.

/dSYM[=VAL] Определение символического имени SYM = 0, или
= значение VAL.

/e,/r Эмулируемые или выполняемые сопроцессором кома-
нды с плавающей точкой.

/h,/? Вывод на дисплей настоящего экрана помощи.

/iPATH Установка пути доступа (PATH) к включаемым файлам.

/jCMD Объединение с директивой ассемблера (например,
/jIDEAL).

/kh#,/ks# Размер хеш-таблицы, размер строковой области.

/l,/la Генерирование листинга: l = нормальный листинг,
la = расширенный листинг.

/ml,/mx,/mu Учет регистра в символических именах:
ml = все, mx = глобальные, mu = никакие.

/mv# Установка максимально допустимой длины символических
имен.

/m# Позволяет выполнять # проходов для разрешения
ссылок вперед.

/n Подавить вывод в листинге таблицы символических имен.

/p В защищенном режиме проверка нарушения сегментa
программы.

/q Подавление записей .OBJ-файла, не нужных для
компоновки.

/t Подавление сообщений при успешном ассемблировании.

/w0,/w1,/w2 Установка уровня предупреждений: w0 = не уста-
новлен; w1=w2 = предупреждения установлены.

/w-xxx,/w+xxx Отменить (-) или разрешить (+) выдачу предуп-
реждения номер xxx.

/x Включить в листинг значение «ложно» для условных
операторов.

/z Вывести на дисплей строку исходного текста с со-
общением об ошибке.

/zi,/zd Информация об отладке:
zi = полное представление, zd = только номера строк.

Опции командной строки позволяют задать имя одного или более
файлов для ассемблирования, а также управляющие опции,
определяющие режимы ассемблирования файлов.

В общем виде командная строка выглядит следующим образом:

TASM набор_файлов [;набор_файлов]…

Точка с запятой (;) после левой скобки ([) позволяет
ассемблировать одной командной строкой несколько групп файлов,
служа разделителем между этими группами. При желании можно
устанавливать для каждого набора файлов свои собственные опции;
например,

TASM /e FILE1; /a FILE2

ассемблирует FILE1.ASM с опцией командной строки /e, а файл
FILE2.ASM с опцией командной строки /a.

В общей форме записи командной строки набор_файлов может быть
представлен как:

[опция]… исходный_файл [[+] исходный_файл]…
[,[объектный_файл] [, [файл_листинга], [,
[файл_перекрестных_ссылок]]]]

Приведенный выше синтаксис показывает, что группа файлов
может начинаться с любых опций, относящихся к этим файлам, после
чего следуют имена самих ассемблируемых файлов. Имя файла может
представлять собой как имя отдельного файла, так и включать в себя
символы универсального сопоставления, принятые в DOS, * или ?, что
означает задание ассемблирования нескольких файлов. Если имя файла
не имеет расширения, то Turbo Assembler сам прибавит расширение
.ASM. Например, для ассемблирования всех файлов в текущей
директории введите

TASM *

Если вы хотите ассемблировать несколько файлов, их имена
можно разделить знаком плюс (+):

TASM MYFILE1 + MYFILE2

За именем ассемблируемого файла можно задать необязательные
имена объектного файла, файла листинга и файла перекрестных
ссылок. Если вы не задали имен объектного файла или файла
перекрестных ссылок, то Turbo Assembler создаст объектный файл с
тем же именем, что и у файла исходного текста и расширением .OBJ.

Файл листинга не будет создан, пока вы в явном виде не
запросите его создание. Чтобы запросить листинг, поместите после
имени объектного файла запятую и за ней имя файла листинга. Если
не задать имя файла листинга явно, Turbo Assembler создаст этот
файл с тем же именем, что и у исходного файла, и расширением .LST.
Если же вы задали имя файла листинга, но без расширения, к имени
будет прибавлено расширение .LST.

Файл перекрестных ссылок не будет создан, пока вы в явном
виде не запросите его создание. Чтобы запросить перекрестные
ссылки, поместите после имени файла листинга запятую и за ней имя
файла перекрестных ссылок. Если не задать имя файла перекрестных
ссылок явно, Turbo Assembler создаст этот файл с тем же именем,
что и у исходного файла, и расширением .XRF. Если же вы задали имя
файла перекрестных ссылок, но без расширения, к имени будет
прибавлено расширение .XRF. Описание работы с файлом перекрестных
ссылок при помощи утилиты глобальных перекрестных ссылок (TCREF)
находится на диске.

Если вы желаете принять имя объектного файла по умолчанию и
при этом запросить файл листинга, вы должны поместить запятую,
которая обычно отделяет имя объектного файла от имени файла
листинга:

TASM FILE1,,TEST

Эта строка вызовет ассемблирование файла FILE1.ASM в
объектный файл FILE1.OBJ и создаст файл листинга TEST.LST.

Если вы хотите принять по умолчанию имена объектного файла и
файла листинга, а также запросить создание файла перекрестных
ссылок, вы должны поместить в строке запятые, обычно отделяющие
эти имена:

TASM MYFILE,,,MYXREF

Эта строка вызовет ассемблирование файла MYFILE.ASM в
объектный файл MYFILE.OBJ и создаст файл листинга MYFILE.LST и
файл перекрестных ссылок MYXREF.XRF.

Если при задании исходных файлов для ассемблирования вы
использовали символы универсального сопоставления, вы также можете
использовать эти символы в именах объектного файла и листинга.
например, если в вашей текущей директории находятся файлы XX1.ASM
и XX2.ASM, то командная строка

TASM XX*,YY*

ассемблирует все файлы, начинающиеся с XX, сгенерирует
объектные файлы, начинающиеся с YY, а остальную часть их имени
возьмет из имен исходных файлов. В результате полученные объектные
файлы будут называться YY1.OBJ и YY2.OBJ.

Если вы не хотите получать объектный файл, а только файл
листинга, либо вам требуется файл перекрестных ссылок, а объектный
файл и файл листинга вам не нужны, то в качестве имени файла вы
можете задать фиктивное устройство (NUL). Например,

TASM FILE1,,NUL,

ассемблирует файл FILE1.ASM в объектный файл FILE1.OBJ, не
создаст файл листинга и создаст файл перекрестных ссылок FILE1.XRF.

Опции командной строки
——————————————————————

Опции командной строки позволяют управлять поведением
ассемблера и режимами вывода генерируемой им информации в листинг,
объектный файл и на экран. Turbo Assembler имеет несколько опций,
не выполняющих никаких действий, но обеспечивающих его
совместимость с прошлыми и текущей версиями MASM:

/B Установка размера буфера.
/V Вывод дополнительных статистических данных.

Вводить опции можно любыми комбинациями букв нижнего и
верхнего регистров. кроме того, их можно помещать в любом порядке,
за исключением случая, когда у вас имеется одновременно несколько
опций /i или /j; эти опции обрабатываются в последовательности их
появления. При использовании опции /d следует обращать внимание на
определение символических имен, прежде чем использовать их в
последующих опциях /d.

Примечание: Если в исходном тексте программы имеются
директивы, противоречащие опциям командной строки, то более
высокий приоритет будет у директив программы.

Обобщенное описание опций командной строки Turbo Assembler
дается на рис.3.1; ниже каждая из них описана более подробно.

————————————————————
/a
————————————————————
Функция Задает упорядочение сегментов по алфавиту.

Синтаксис /a

Комментарии Опция /a сообщает Turbo Assembler, что се-
гменты в объектном файле должны
располагаться в алфавитном порядке. Это то
же самое, что и использование директивы
.ALPHA в исходном файле.

Обычно эта опция используется, если вы
хотите ассемблировать исходный файл,
созданный для самых первых версий
ассемблеров IBM или Microsoft.

Опция /s меняет действие данной опции на
противоположное и возвращает действующее по
умолчанию упорядочение сегментов в
последовательности их расположения.

Если вы задали при помощи директивы .SEQ в
исходном файле последовательное
расположение сегментов, то данная директива
отменит любую опцию /a командной строки.

Пример TASM /a TEST1

Данная командная строка создаст объектный
файл TEST1.OBJ, сегменты в котором будут
расположены в алфавитном порядке.

————————————————————
/b
————————————————————
Синтаксис /b

Комментарии Опция /b включается для совместимости. Она
не ведет к выполнению никаких действий и не
влияет на ассемблирование.

————————————————————
/c
————————————————————
Функция Разрешает отображение перекрестных ссылок
в файле листинга.

Синтаксис /c

Комментарии Опция /c разрешает включение в файл листинга
информации о перекрестных ссылках. Turbo
Assembler добавляет в таблицу символических
имен, находящуюся в конце файла листинга,
информацию о перекрестных ссылках. Это
означает, что для получения информации о
перекрестных ссылках вы либо должны явно
задать создание файла листинга в командной
строке, либо воспользоваться опцией /l.

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

Пример TASM /L /C TEST1

Данная командная строка создаст файл
листинга, который в таблице символических
имен будет также содержать информацию о
перекрестных ссылках.

————————————————————
/d
————————————————————
Функция Определяет символическое имя.

Синтаксис /dсимволич_имя[=значение или выражение]

Комментарии Опция /d определяет для вашего исходного
файла символическое имя, точно так же, как
если бы оно было определено в первой строке
этого файла директивой =. Эту опцию можно
использовать в командной строке
произвольное число раз.

При определении символического имени его
можно определить только равным другому
символическому имени, либо константе.
Выражения с операторами справа от знака
равенства (=) использовать нельзя.
Например, /dX=9 и /dX=Y разрешены, /dX=Y-4
не разрешена.

Пример TASM /DMAX=10 /DMIN=2 TEST1

Данная командная строка определяет два
символических имени, MAX и MIN, к которым
могут обращаться другие операторы исходной
программы TEST1.ASM.

————————————————————
/e
————————————————————
Функция Генерирует команды эмулятора операций с
плавающей точкой.

Синтаксис /e

Комментарии Опция /E сообщает Turbo Assembler о необ-
ходимости сгенерировать команды с плавающей
точкой, которые будут выполнены программным
эмулятором операций с плавающей точкой. Эта
опция используется, если ваша программа
содержит библиотеку эмуляции операций с
плавающей точкой, которая дублирует функции
математического сопроцессора 80×87.

Обычно эта опция применяется только тогда,
когда ваш модуль на ассемблере входит как
составная часть в программу на языке
высокого уровня, подключающих библиотеку
для эмуляции операций с плавающей точкой.
(Turbo C, Turbo Pascal, Turbo Basic и Turbo
Prolog поддерживают эмуляцию операций с
плавающей точкой). Скомпоновать
ассемблерную программу с такой библиотекой
напрямую нельзя, поскольку для этого
требуется инициализация библиотеки
кодом загрузки компилятора.

Опция /r меняет действие данной опции на
противоположное, устанавливая такое
ассемблирование команд с плавающей точкой,
при котором они смогут выполняться только
при наличии математического сопроцессора.

Если в вашем исходном файле имеется
директива NOEMUL, то она отменит действие
опции /E в командной строке.

Опция командной строки /e действует так же,
как и наличие в начале вашего исходного
файла директивы EMUL, что эквивалентно
использованию опции командной строки
/jEMUL.

Пример TASM /e SECANT
TCC -f TRIG.C SECANT.OBJ

Первая командная строка ассемблирует модуль
с эмулированием команд с плавающей точкой.
Вторая командная строка компилирует
исходный модуль на языке Си с эмуляцией
операций с плавающей точкой и затем
компонует его с объектным файлом,
полученным из программы на языке
ассемблера.

————————————————————
/h или /?
————————————————————
Функция Выводит экран помощи.

Синтаксис /h или /?

Комментарии Опция /h сообщает Turbo Assembler о необхо-
димости вывести на дисплей экран помощи с
описанием синтаксиса командной строки. Этот
экран содержит список опций и различные
имена файлов, которые вы можете задать.
Опция /? работает точно так же.

Пример TASM /h

————————————————————
/i
————————————————————
Функция Устанавливает путь доступа (PATH) к вклю-
чаемому файлу.

Синтаксис /iпуть

Комментарии Опция /i сообщает Turbo Assembler о том,
где искать файлы, включаемые в ваш исходный
файл директивой INCLUDE. В командной строке
может быть задано несколько опций /i (их
количество ограничивается лишь размером
оперативной памяти).

Когда Turbo Assembler встречает директиву
INCLUDE, адрес поиска включаемого файла
определяется тем, входит ли в имя файла в
директиве INCLUDE имя пути доступа к нему,
или же там указано только имя этого файла.

Если как часть имени файла там указан путь,
то сначала Turbo Assembler пытается найти
этот файл по этому пути, в случае неудачи
просматривает все директории, указанные в
опциях командной строки /i в порядке их
следования в этой строке. Затем он
просматривает все директории, заданные
опциями /i в файле конфигурации.

Если в имени файла путь к директории не
задан, то сначала Turbo Assembler пытается
найти этот файл в директориях, указанных в
опциях командной строки /i, затем
просматривает все директории, заданные
опциями /i в файле конфигурации, и наконец,
ищет файл в текущей директории.

Пример TASM /i\INCLUDE /iD:\INCLUDE TEST1

В исходном файле содержится оператор

INCLUDE MYMACS.INC

Turbo Assembler сначала выполнит поиск по
пути \INCLUDE\MYMACS.INC, затем поиск по
пути D:\INCLUDE\MYMACS.INC. Если при этом
файл не будет найден, то будет выполнен
поиск файла MYMACS.INC в текущей
директории. Если оператор в исходном файле
выглядел как

INCLUDE INCS\MYMACS.INC

то Turbo Assembler сначала выполнит поиск
INCS\MYMACS.INC, а затем \INCLUDE\MYMACS.
INC и наконец, D:\INCLUDE\MYMACS.INC.

————————————————————
/j
————————————————————
Функция Определяет директиву запуска ассемблера.

Синтаксис /jдиректива

Комментарии Опция /j позволяет вам задавать директиву,
которая будет ассемблирована перед первой
строкой исходного файла; директива может
являться любой директивой Turbo Assembler,
не принимающей никаких аргументов, например
.286, IDEAL, %MACS, NOJUMPS и т.д. Полное
описание всех директив Turbo Assem- bler
см. в главе 3 Руководства пользователя.

В командной строке можно поместить
несколько опций /j; в этом случае они будут
обрабатываться слева-направо по командной
строке.

Пример TASM /j.286 /jIDEAL TEST1

Данная командная строка ассемблирует файл
TEST1.ASM, с директивами, разрешающими
работу команд для 80286 и синтаксический
анализ выражений в режиме Ideal.

————————————————————
/kh
————————————————————
Функция Устанавливает максимальное количество раз-
решенных символических имен.

Синтаксис /khHчисло_символических_имен

Комментарии Опция /kh устанавливает максимальное коли-
чество разрешенных в вашей программе
символических имен. Если вы не задаете эту
опцию, то в программе может содержаться до
8,192 символических имен; при ее
использовании это количество возрастает до
заданного «числа_символических_имен»,
максимум 32,768.

Эту опцию следует задавать, если при
ассемблировании программы вы получили
сообщение «Out of hash space» («Не хватает
хеш-памяти»).

Эта опция также применяется для уменьшения
общего числа символических имен за значение
по умолчанию 8,192. Тем самым освобождается
некоторый объем памяти, который может быть
использован, если при ассемблировании
программы не хватает памяти.

Пример TASM /kh10000 BIGFILE

Данная командная строка сообщает Turbo
Assembler, что при ассемблировании файла
BIGFILE он должен зарезервировать область
для 10,000 символических имен.

————————————————————
/ks
————————————————————
Функция Устанавливает максимальный размер строковой
области Turbo Assembler.

Синтаксис /ksкилобайт

Комментарии Обычно размер строковой области определяет-
ся автоматически и не требует
вмешательства. Однако, если для вашего
исходного файла при ассемблировании было
выдано сообщение «Out of string space» («Не
хватает строковой области»), вы можете
увеличить ее размер при помощи данной
опции. Попробуйте в этом случае начать с
числа 100 и увеличивать его до тех пор,
пока ассемблирование программы не
выполнится успешно. Максимально допустимое
значение этой величины в килобайтах равно
255.

Пример TASM /ks150 SFILE

Данная командная строка сообщает Turbo
Assembler, что требуется зарезервировать
150 К на строковую область.

————————————————————
/l
————————————————————
Функция Генерирует файл листинга.

Синтаксис /l

Комментарии Опция /l указывает на необходимость создания
файла листинга, даже если вы не задали его
создание явно в командной строке. Файл
листинга будет иметь то же имя, что и
исходный файл, и расширение .LST.

Пример TASM /l TEST1

Данная командная строка запрашивает
создание файла листинга с именем TEST1.LST.

————————————————————
/la
————————————————————
Функция Включает в файл листинга коды интерфейса
с программной высокого уровня

Синтаксис /la

Комментарии Опция /la указывает на необходимость вклю-
чения в файл листинга всех сгенерированных
кодов, в том числе генерируемого для
директивы интерфейса с языком высокого
уровня .MODEL.

Пример TASM /LA FILE1

————————————————————
/m
————————————————————
Функция Устанавливает максимальное число проходов
ассемблера.

Синтаксис /m[число_проходов]

Комментарии Обычно Turbo Assembler работает как одно-
проходный ассемблер. Опция /m позволяет
задать максимальное число проходов, которое
ассемблер выполнит в процессе
ассемблирования. TASM автоматически
определяет те случаи, когда фактически
требуемое число проходов меньше заданного.
Если число_проходов не задано, то по
умолчанию оно равно пяти.

Некоторые модули могут содержать
конструкции, которые будут правильно
ассемблированы только при двух проходах.
Если множественные проходы не разрешены, то
для такого модуля будет выдано хотя бы одно
предупреждение «Pass-dependent construction
encountered» («Встречена конструкция,
зависящая от числда проходов»). При
заданной опции /m Turbo Assembler сможет
ассемблировать такой код, но не сможет его
оптимизировать за счет удаления пустых
команд NOP, независимо от числа заданных
проходов. В этом случае будет выдано
предупреждение «Module is pass dependent —
compatibility pass was done» («Модуль
зависим от числа проходов — сделан проход
для обеспечения совместимости»).

Пример TASM /M2 TEST1

Эта строка заставит Turbo Assembler при
ассемблировании TEST1 выполнить два
прохода.

————————————————————
/ml
————————————————————
Функция Заставляет учитывать разницу между за-
главными и строчными буквами в
символических именах.

Синтаксис /ML

Комментарии Опция /ml заставляет учитывать разницу
между заглавными и строчными буквами в
символических именах. Обычно в именах буквы
верхнего и нижнего регистров
рассматриваются как одни и те же, и имена
ABCxyz, abcxyz и ABCXYZ обозначают одно и
то же символическое имя. Если же задать
опцию /ml, то приведенные три символических
имени будут рассматриваться как различные
имена. Однако даже при задании опции /ml
ключевые слова ассемблера допускают набор
как заглавными, так и строчными буквами.
Ключевые слова являются символическими
именами, встроенными в ассемблер и имеющими
для него специальный смысл, например
мнемонические обозначения команд, директив
и операторов.

Пример TASM /ml TEST1

где файл TEST1.ASM содержит следующие
операторы:

abc DW 0
ABC DW 1 ;символ, отличный от
;предыдущего
Mov ax,[bp] ;в ключевых словах
;смешаннное употребле-
;ние регистров допус-
;тимо

————————————————————
/mu
————————————————————
Функция Преобразовывает все буквы символических
имен к верхнему регистру.

Синтаксис /mu

Комментарии Опция /MU сообщает Turbo Assembler о том,
что нужно игнорировать регистр букв,
составляющих символические имена. По
умолчанию Turbo Assembler определяет, что
все буквы, набранные нижним регистром,
будут преобразовываться к верхнему
регистру, пока этот режим не будет изменен
директивой /ML.

Пример TASM /MU TEST1

обеспечивает преобразование букв,
составляющих символические имена, к
верхнему регистру (это выполняется по
умолчанию):

EXTRN myfunc:NEAR
call myfunc ;неважно, если это
;имя будет набрано как
;MYFUNC, Myfunc и т.д.

————————————————————
/mv#
————————————————————
Функция Устанавливает максимальную длину символи-
ческихимен.

Синтаксис /mv#

Комментарии Опция /mv# устанавливает максимальную длину
распознаваемых TASM символических имен.
Например, если задать /mv3, то TASM будет
рассматривать имена ABCC и ABCD как одно и
то же символическое имя ABC, но не как AB.

————————————————————
/mx
————————————————————
Функция Устанавливает зависимость общих и внешних
символических имен от регистра, в котором
эти имена набраны.

Синтаксис /mx

Комментарии Опция /mx сообщает Turbo Assembler о том,
что только общие и внешние символические
имена зависят от регистра. Все прочие
используемые символические имена (в
исходном файле) будут рассматриваться как
набранные на верхнем регистре.

Эту директиву следует использовать при
вызове подпрограмм из других модулей,
компилированных или ассемблированных таким
образом, чтобы учитывался регистр;
например, в случае модулей, компилируемых
Turbo C.

Пример TASM /mx TEST1

где файл TEST1.ASM содержит следующие
строки исходного текста:

EXTRN Cfunc:NEAR
myproc PROC NEAR
call Cfunc
.
.
.

————————————————————
/n
————————————————————
Функция Подавляет вывод таблицы символических имен
в файле листинга.

Синтаксис /n

Комментарии Опция /n сообщает Turbo Assembler о том,
что вы не хотите, чтобы в конце файла
листинга выводилась обычная таблица
символических имен. Обычно в конце файла
выводится полная таблица символических
имен, в которой приводятся все
символические имена, их типы и значения.

Файл листинга должен быть задан либо явно в
командной строке, либо опцией /l; если файл
не задан, то опция /n никаких действий не
выполняет.

Пример TASM /L /N TEST1

Эта опция генерирует файл листинга, в
котором приводится только сгенерированный
код, без значений символических имен.

————————————————————
/p
————————————————————
Функция В защищенном режиме проверяет код на воз-
можный побочный эффект (нарушение защиты).

Синтаксис /p

Комментарии Опция /p определяет, что вы хотите получать
предупреждения обо всех командах,
генерирующих код «с возможным побочным
эффектом», если установлен режим защиты
памяти. Команды, пересылающие в защищенном
режиме данные при помощи конструкции
CS:переопределение, рассматриваются как
команды с возможным побочным эффектом,
посколько в этом случае для их правильной
работы требуется принятие специальных мер.

Эту опцию требуется использовать только в
случае программы, которая предназначена для
работы на 80286 или 80386 в защищенном
режиме.

Пример TASM /p TEST1

где TEST1.ASM содержит следующие операторы:

.286P
CODE SEGMENT
temp DW ?
mov CS:temp,0 ;в защищенном режиме
;возможен побочный
;эффект

————————————————————
/q
————————————————————
Функция Подавляет вывод записей .OBJ-файла, не
нужных для компоновки.

Синтаксис /q

Комментарии Опция /q удаляет из результирующего .OBJ-
файла записи об авторских правах и записи
зависимости файла, уменьшая тем самым его
размер. Эту опцию не следует задавать при
использовании программы MAKE или
аналогичной программы, работа которой
основывается на записях зависимости.

————————————————————
/r
————————————————————
Функция Генерирует фактические команды операций с
плавающей точкой.

Синтаксис /r

Комментарии Опция /R сообщает Turbo Assembler о том,
что нужно генерировать фактические команды
операций с плавающей точкой (вместо
генерируемых через эмулятор команд с
плавающей точкой). Данная опция
используется для программ, которые должны
работать на машинах с математическим
сопроцессором 80×87.

Опция /e изменяет действие данной опции на
противоположное, вызывая генерирование
эмулируемых команд с плавающей точкой.

Если в вашем исходном файле содержится
директива EMUL, то она отменит действие
опции /r командной строки.

Опция командной строки /r оказывает то же
действие, что и использование в начале
исходного файла директивы NOEMUL или
использование опции командной строки
/jNOEMUL.

Пример TASM /r SECANT
TPC /$N+ /$E- TRIG.PAS

Первая командная строка ассемблирует модуль
с фактическими командами плавающей точки.
Вторая командная строка компилирует модуль
исходного текста на Паскале с фактическими
командами плавающей точки, который затем
компонуется с ассемблерным модулем.

————————————————————
/s
————————————————————
Функция Задает последовательное упорядочение сег-
ментов.

Синтаксис /s

Комментарии Опция /s сообщает Turbo Assembler о том,
что нужно помещать сегменты в объектный
файл в той последовательности, в которой
они расположены в исходном файле. По
умолчанию Turbo Assembler устанавливает
именно этот способ упорядочения сегментов,
если не изменить его опцией A в файле
конфигурации.

Если задать упорядочение сегментов по
алфавиту директивой .ALPHA исходного текста,
то эта директива отменит опцию /S командной
строки.

Пример TASM /s TEST1

Эта строка создаст объектный файл (TEST1.
OBJ), в котором сегменты будут расположены
так же, как в исходном файле.

————————————————————
/t
————————————————————
Функция Подавляет выдачу сообщений при успешном
ассемблировании.

Синтаксис /t

Комментарии Опция /t отменяет вывод Turbo Assembler
на дисплей любых сообщений, пока при
ассемблировании не встретится сообщение об
ошибке или предупреждение.

Эту опцию можно использовать при
ассемблировании нескольких модулей, когда
вы желаете, чтобы на экран выводились
только сообщения об ошибках или
предупреждения.

Пример TASM /t TEST1

————————————————————
/v
————————————————————
Синтаксис /v

Комментарии Опция /v включается для совместимости. Она
не выполняет никаких действий и не влияет
на ассемблирование

————————————————————
/w
————————————————————
Функция Управляет генерированием сообщений уровня
предупреждения.

Синтаксис /w
w-[класс_предупреждений]
w+[класс_предупреждений]

Комментарии Опция /w управляет уровнем выдаваемых Turbo
Assembler предупреждений.

Если задать просто /w, разрешается выдача
«умеренных» предупреждений. Эти
предупреждения означают просто, что вы в
каком-то месте можете улучшить
эффективность кода.

Если задать /w- без
«класса_предупреждения», запрещается выдача
любых предупреждений. Если за /w- указать
«класс_предупреждения», то отменяется вывод
предупреждений только этого класса. Каждое
сообщение уровня предупреждения имеет
трехбуквенный идентификатор:

ALN Выравнивание сегмента в памяти.
ASS Предполагается 16-битовый сегмент.
BRK Нужны скобки.
ICG Генерируртся неэффективный код.
LCO Переполнение счетчика адреса.
OPI Открытие условного IF.
OOP Открытие процедуры.
OPS Открытие сегмента.
OVF Арифметическое переполнение.
PDC Конструкция, зависимая от проходов.
PQK Предполагается константа для
предупреждения [const].
PRO Запись в память в защищенном режиме
требует переопределения CS.
RES Предупреждение о резервируемом
слове.
TPI Предупреждение о недопустимости
Turbo Pascal.

Если за /w+ класс_предупреждения не
указывать, разрешаются все предупреждения.
Если за /w+ указать класс предупреждения из
предыдущего списка, разрешено будет
появление только этого предупреждения.

По умолчанию Turbo Assembler начинает
ассемблирование вашей программы при
разрешении всех предупреждений, за
исключением сообщения о неэффективности
генерируемого кода (ICG) и о записи в
память в защищенном режиме (PRO).

Для управления тем, какие предупреждения
разрешены для конкретных участков исходного
текста,можно использовать директивы WARN и
NOWARN. Дополнительную информацию об этих
директивах см. в главе 3 Справочного
руководства.

Пример TASM /w TEST1

Следующий оператор в TEST1.ASM приведет к
появлению предупреждения, которое без /w
выдано бы не было:

mov bx,ABC ;ведет к появлению сообщения
;о неэффективности кода
ABC = 1

В случае командной строки

TASM /w-OVF TEST2

никаких предупреждений не появится в слу-
чае, если TEST2.ASM содержит

dw 1000h * 20h

————————————————————
/x
————————————————————
Функция Вызывает включение в файл листинга услов-
ных блоков со значением false (ложно).

Синтаксис /x

Комментарии Если условные операторы IF, IFNDEF, IFDEF
и т.д. принимают значение False, то опция
/x вызывает появление операторов, входящих
в данный условный блок, в файле листинга.
Эта опция ведет также к появлению в
листинге самих условных директив; обычно же
они туда не выводятся.

Вы должны задать получение файла листинга в
командной строке или через опцию /l, иначе
/x никакого действия не окажет.

Для отмены действия опции /x могут служить
директивы .LFCOND, .SFCOND и .TFCOND.

Пример TASM /x TEST1

————————————————————
/z
————————————————————
Функция Выводит на дисплей строки исходного файла
с соответствующими сообщениями об ошибках.

Синтаксис /z

Комментарии Опция /z сообщает Turbo Assembler о необ-
ходимости вывести на дисплей
соответствующую строку исходного файла
вместе с сообщением об ошибке, вызванным
данной строкой. Строка, которая привела к
появлению ошибки, выводится перед
сообщением об ошибке. Если эта опция
выключена, то Turbo Assembler просто
выводит на дисплей сообщение с описанием
ошибки.

Пример TASM /z TEST1

————————————————————
/zd
————————————————————
Функция Разрешает включать в объектные файлы ин-
формацию о номерах строк.

Синтаксис /zd

Комментарии Опция /zd сообщает Turbo Assembler о необ-
ходимости включать в объектные файлы
информацию о номерах строк. Это позволяет
автономному отладчику, Borland Turbo De-
bugger, выдавать на дисплей сообщение о
текущем положении в исходной программе, но
при этом в объектный файл не попадает
информация, дающая отладчику возможность
доступа к соответствующим элементам данных.

Если при попытке отладить программу в Turbo
Debugger вам не хватило памяти, вы можете
для некоторых модулей использовать опцию
/zd, а для других /zi.

Пример TASM /zd TEST1

————————————————————
/zi
————————————————————
Функция Разрешает включать в объектные файлы ин-
формацию для отладки.

Синтаксис /zi

Комментарии Опция /zi сообщает Turbo Assembler о необ-
ходимости включать в объектные файлы полную
отладочную информацию. Сюда входят номера
строк исходной программы для ее
синхронизации с отлаживаемым кодом и
информация о типах данных, что дает
возможность идентифицировать и исправлять
данные в программе.

Опция /zi позволяет вам использовать все
средства отладчика Turbo Debugger для
пошагового выполнения программы, доступа и
внесения изменений в элементы данных. Опцию
/zi можно задавать как сразу для всех
модулей программы, либо для отдельных
модулей, в отладке которых вы
заинтересованы в текущий момент. Поскольку
/zi включает в объектные и загрузочные
файлы дополнительную информацию, вы можете
отказаться от использования этой опции при
отладке в Turbo debuggerиз соображений
доступной памяти.

Пример TASM /zi TEST1

Косвенные командные файлы
——————————————————————

В любой точке при вводе командной строки Turbo Assembler
позволяет задавать косвенный командный файл, для чего перед именем
этог файла ставится знак @. Например,

TASM /dTESTMODE @MYPROJ.TA

приводит к тому, что содержимое файла MYPROJ.TA становится
частью командной строки, точно так же, как если бы его содержимое
было введено в командной строке непосредственно.

Данное полезное средство позволяет вам помещать наиболее
часто используемые командные строки и списки файлов в отдельный
файл. Не обязательно помещать всю командную строку в один
косвенный файл, поскольку в одной строке может быть использовано
независимо несколько косвенных файлов, и кроме того, они могут
чередоваться с обычными аргументами; например:

TASM @MYFILES @IOLIBS /dBUF=1024

Таким способом вы можете хранить длинные списки стандартных
файлов и опций в файлах, что позволяет быстро и легко изменять
условия конкретного запуска ассемблирования.

Имена файлов и опции могут размещаться как в одной строке,
так и в нескольких строках, по вашему желанию.

Файл конфигурации
——————————————————————

Turbo Assembler позволяет вам также помещать наиболее часто
используемые опции в файл конфигурации, который должен находиться
в текущей директории. При работе в операционной системе DOS 3.x и
старше поиск будет также выполняться в директории, из которой был
загружен TASM. Таким образом, при запуске Turbo Assembler будет
искать в текущей директории файл TASM. CFG. Если Turbo Assembler
сможет найти этот файл, он станет рассматривать его как косвенный
файл и обрабатывать его до в командной строке ранее, чем все
остальное.

Это поможет вам, если вы держите все исходные файлы для
конкретного проекта в одной директории и знаете, например, что вам
всегда необходимо выполнять ассемблирование с эмулируемыми
операциями с плавающей точкой (опция /e). Тогда вы можете
поместить эту опцию в файл TASM.CFG, что позволит не задавать ее
всякий раз при запуске Turbo Assembler.

Содержимое файла конфигурации имеет в точности тот же формат,
что и косвенный файл. Этот файл может содержать любую допустимую
комбинацию опций командной строки, расположенных на любом
количестве строк. Все опции обрабатываются так, как если бы они
помещались в одной строке.

Содержимое файла конфигурации обрабатывается до любых
аргументов командной строки. Тем самым дается возможность отменять
любые опции, задаваемые в файле конфигурации, просто помещая в
командной строке опции с противоположным действием. Например, если
в файле конфигурации содержатся опции

/a /e

а вы запускаете Turbo Assembler с опциями

TASM /s /r MYFILE

где MYFILE это имя вашей программы, то при ассемблировании
этой программы будут приняты режимы последовательного упорядочения
сегментов (/s) и генерирования фактических инструкций с плавающей
точкой (/r), даже если в файле конфигурации задано алфавитное
упорядочение сегментов (/a) и генерирование эмулирование команд с
плавающей точкой (e).