Глава 2. Использование директив и параметров

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


Запуск Турбо Ассемблера из DOS

На дистрибутивных дисках находятся две версии Турбо Ассемб- лера - TASM.EXE и TASMX.EXE. Используемая версия зависит от того, что вам нужно сделать. Примечание: TASMX следует выбрать для ассемблирования очень больших модулей. Турбо Ассемблер TASMX можно запустить в защищенном режиме Microsoft Windows 3.0 при помощи окна диалога Windows DOS, если вы запустили Windows в улучшенном режиме 386. Используйте TASMX, если у вас имеется большой объем расширенной памяти, и вам требу- ется ассемблировать очень большие модули. TASMX требует задания в маршруте поиска еще одного файла, DPMILOAD.EXE, который также поставляется на дистрибутивных дисках. (При попытке выполнения TASMX в другой среде, нежели MS-Windows в улучшенном режиме 386, TASMX пытается использовать поставляемый с Турбо Ассемблером сер- вер DPMI - поддержку интерфейса защищенного режима DOS. Это поз- воляет вам использовать TASMX на машинах с процессорами 286 или 386 при наличии расширенной памяти.) Примечание: TASM следует выбирать для того, чтобы иметь большую скорость выполнения ассемблирования. Если вам не нужно ассемблировать очень большие модули, сле- дует выбрать TASM. Эта версия Турбо Ассемблера работает сравни- тельно быстрее, чем TASMX. Вы также можете запустить TASM, нахо- дясь в диалоговом окне Windows DOS. Обе версии Турбо Ассемблера имеют очень мощный и гибкий син- таксис командной строки. Если при запуске Турбо Ассемблера не за- дать никаких аргументов, например: TASM или TASMX то будет выведен экран со вспомогательным описанием параметров командной строки и синтаксиса для задания ассемблируемых файлов. На Рис. 2.1 показан этот экран. Параметры и их синтаксис для TASM такие же. ----------------------------------------------------------------- Turbo Assembler Version 3.0 Copyright (C) 1988,1991 by Borland International, Inc Usage: TASM [параметры] исх_файл [,объект_файл] [,листинг] [,пер_ссылки] /a,/s Упорядочивание сегментов по алфавитному порядку или порядку исходного кода /c Генерация в листинге перекрестных ссылок /dSYM[=VAL] Определяется SYM = 0 или SYM = VAL /e,/r Эмулируемые или действительные инструкции с плаваю- щей точкой /h,/? Выводится данная справочная информация /iPATH Включаемые файлы ищутся по маршруту, определяемому PATH /jCMD Определяет начальную директиву Ассемблера CMD (на- пример, jIDEAL) /kh# Мощность хеш-таблицы # /l,/la Генерация листинга: l=обычный листинг, la=расширен- ный /ml,/mx,/mu Различимость в регистре букв идентификаторов: ml=все, mx=глобальные, mu=не различаются /mv# Установка максимально допустимой длины имен иденти- фикаторов /m# Позволяет выполнять # проходов для разрешения ссы- лок вперед /n Подавление в листингах таблицы идентификаторов /o,/op Генерация оверлейного кода, 32-разрядные фиксиро- ванные адреса для компоновщика Phar Lap. /q Подавление записей файла .OBJ, не нужных для ком- поновки /p Проверка перекрытия сегмента кода в защищенном ре- жиме /t Подавление сообщений при успешном ассемблировании /w0,/w1,/w2 Задание уровня предупреждение: w0 - нет предуп- реждений, w1 или w2 - есть предупреждения /w-xxx,/w+xxx Запрещение или разрешение предупреждения xxx /x Включение в листинги блоков условного ассемблирова- ния /z Вывести на дисплей строку исходного текста с сооб- щением об ошибке. /zi,/zd,/zn Информация об идентификаторах для отладки: zi=пол- ная, zd=только о номерах строк, zn=отсутствует. ----------------------------------------------------------------- Рис. 2.1 Командная строка Турбо Ассемблера С помощью параметров командной строки вы можете задавать имя одного или нескольких ассемблируемых файлов, а также параметры, управляющие их ассемблированием. В последующих параграфах все ссылки на TASM относятся также к TASMX. Если вы используете TASMX, просто подставляйте в командах вместо TASM TASMX. Общий вид командной строки выглядит следующим образом: TASM файлы [; файлы]. Точка с запятой после левой квадратной скобки позволяет вам в одной командной строке ассемблировать несколько групп файлов. По желанию вы можете задать для каждой группы файлов различные параметры, на примере: TASM /e FILE1; /a FILE2 Здесь файл FILE1.ASM ассемблируется с параметром командной строки /e, а файл FILE2.ASM - с параметром командной строки /a. В общем случае группа файлов в командной строке может иметь вид: [параметр].исх_файл [[+] исходный_файл]. [,[объектный_файл] [, [файл_листинга], [, [файл_перекрестных_ссылок]] Этот синтаксис показывает, что группа файлов может начинать- ся с любого параметра, который вы хотите применить к этим файлам, а затем могут следовать файлы, которые вы хотите ассемблировать. Именем файла может быть отдельное имя файла, либо вы можете ис- пользовать обычные трафаретные символы DOS * и ? для задания группы ассемблируемых файлов. Если расширение имени файла не ука- зано, Турбо Ассемблер добавляет расширение .ASM. Например, для ассемблирования всех файлов с расширением .ASM в текущем каталоге введите команду: TASM * Если вы хотите ассемблировать несколько файлов, их имена можно разделить знаком плюс (+): TASM MYFILE1 + MYFILE2 За именем ассемблируемого файла можно задать необязательные имена объектного файла, файла листинга и файла перекрестных ссы- лок. Если вы не задали имен объектного файла или файла перекрест- ных ссылок, то Турбо Ассемблер создаст объектный файл с тем же именем, что и у файла исходного текста и расширением .OBJ. Файл листинга не будет создан, пока вы в явном виде не зап- росите его создание. Чтобы запросить листинг, поместите после имени объектного файла запятую и за ней имя файла листинга. Если не задать имя файла листинга явно, Турбо Ассемблер создаст этот файл с тем же именем, что и у исходного файла, и расширением .LST. Если же вы задали имя файла листинга, но без расширения, к имени будет прибавлено расширение .LST. Файл перекрестных ссылок не будет создан, пока вы в явном виде не запросите его создание. Чтобы запросить перекрестные ссылки, поместите после имени файла листинга запятую и за ней имя файла перекрестных ссылок. Если не задать имя файла перекрестных ссылок явно, Турбо Ассемблер создаст этот файл с тем же именем, что и у исходного файла, и расширением .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. Если вы не хотите создавать объектный файл, но хотите полу- чить файл листинга, или если вы хотите получить файл перекрестных ссылок, но не хотите создавать файл листинга или объектный файл, можно в качестве имени файла задать нулевое (фиктивное) устройс- тво. Например: TASM FILE1,,NUL, Эта команда ассемблирует файл FILE1.ASM в объектный файл FILE1.OBJ. При этом файл листинга не создается, а создается файл перекрестных ссылок FILE1.XRF.

Параметры командной строки

Необязательные параметры командной строки позволяют вам уп- равлять поведением Ассемблера и тем, какую информацию он выводит на экран, в листинг и объектный файл. В Турбо Ассемблере предус- мотрены некоторые параметры, которые не выполняют никаких дей- ствий, а используются только для совместимости текущей версии TASM с предыдущими версиями MASM (макроассемблер фирмы Microsoft):  1  0/b Задает размер буфера  1  0/v Выводит на экран дополнительную статистику Вы можете задавать параметры, представляющие собой любую комбинацию букв в верхнем и нижнем регистре. Кроме того, парамет- ры можно задавать в любом порядке (кроме параметров /I и /J), они будут при этом обрабатываться последовательно. При использовании параметра /d нужно быть внимательным: идентификаторы надо опреде- лить до того, как они будут использованы в последующих параметрах /d. Примечание: С помощью директив, указанных в исходном коде, вы можете отменить эквивалентные им параметры Ассемб- лера. На Рис. 2.1 (см. выше) приведен полный список параметров Турбо Ассемблера. Далее эти параметры описаны подробно.

Параметр /A

Функция: Задает упорядочивание сегментов по алфавиту. Синтаксис: /A Примечания: Параметр /A указывает Турбо Ассемблеру, что сег- менты в объектном файле должны быть размещены в алфавитном поряд- ке. Это эквивалентно использование в исходном коде директивы .ALPHA. Этим параметром обычно приходится пользоваться тогда, когда вы хотите ассемблировать исходный файл, написанный для ранних версий ассемблеров фирм Microsoft или IBM. Параметр /S изменяет действие данного параметра на обратное, сохраняя используемое по умолчанию последовательное упорядочива- ние сегментов. Если в исходном файле вы задаете с помощью директивы .SEQ последовательное упорядочивание сегментов, то она отменит дей- ствие параметра /A, задаваемого в командной строке. Пример: TASM /A TEST1 Данная командная строка создает объектный файл TEST1.OBJ, сегменты которого упорядочиваются в алфавитном порядке.

Параметр /B

Синтаксис: /B Примечания: Параметр /B используется в целях совместимости с другими версиями. Он не приводит ни к каким действиям и не оказы- вает влияния на ассемблирование.

Параметр /C

Функция: Разрешает включать в листинг перекрестные ссылки. Синтаксис: /C Примечания: Параметр /C разрешает включение в файл листинга информации о перекрестных ссылках. Турбо Ассемблер включает ин- формацию о перекрестных ссылках в таблицу идентификаторов в конце файла листинга. Чтобы получить информацию о перекрестных ссылках, вам нужно также явно задать в командной строке файл листинга или использовать для разрешения формирования файла листинга параметр /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 указывает Турбо Ассемблеру, что нуж- но генерировать инструкции работы с плавающей точкой, которые бу- дут выполняться с помощью программного обеспечения (эмулятора операций с плавающей точкой). Используйте этот параметр, если ваша программа содержит библиотеку эмуляции работы с плавающей точкой, которая эмулирует функции арифметического сопроцессора 80х87. Обычно этот параметр следует использовать только в том слу- чае, если ваш модуль на Ассемблере является частью программы, на- писанной на языке высокого уровня, в которой используется библио- тека эмуляции работы с плавающей точкой (эмуляцию операций с пла- вающей точкой поддерживают компиляторы Borland C++, Турбо Си, Турбо Паскаль, Турбо Бейсик и Турбо Пролог). Вы не можете просто скомпоновать программу на Ассемблере с библиотекой эмуляции, так как предполагается, что библиотека должна инициализироваться на- чальным кодом компилятора. Параметр /R изменяет действие данного параметра на обратное, разрешая ассемблирование действительных инструкций с плавающей точкой, которые могут выполняться арифметическим сопроцессором. Если в исходной файле вы используете директиву NOEMUL, то она отменит действие параметра /E в командной строке. Параметр командной строки /E оказывает то же действие, что и использование в начале исходного файла директивы EMUL, и эквива- лентно параметру командной строки /JEMUL. Пример: TASM /E SEGANT TCC -f TRIG.C SEGANT.OBJ Первая командная строка ассемблирует модуль в эмулируемыми инструкциями с плавающей точкой. Вторая командная строка компили- рует модуль языка Си с эмуляцией операций с плавающей точкой и затем компонует его с объектным файлом Ассемблера.

Параметр /H или /?

Функция: Выводит на экран дисплея справочную информацию. Синтаксис: /H или /? Примечания: Параметр /H указывает Турбо Ассемблеру, что на экран дисплея нужно вывести справочную информацию, описывающую синтаксис командной строки. Эта справочная информация включает в себя список параметров, а также различные задаваемые имена фай- лов. Параметр /? делает то же самое. Пример: TASM /h

Параметр /I

Функция: Задает маршрут доступа к включаемому файлу. Синтаксис: /Iмаршрут Примечания: Параметр /I указывает Турбо Ассемблеру, где нуж- но искать файлы, включаемые в исходный файл по директиве INCLUDE. В командной строке можно указать несколько параметров /I (их чис- ло ограничено только размерами оперативной памяти). Когда Турбо Ассемблер обнаруживает директиву INCLUDE, то место, где он будет искать включаемый файл определяется тем, яв- ляется ли имя файла в директиве INCLUDE маршрутом доступа к ката- логу, или это просто имя файла. Если вы в качестве части имени файла указываете маршрут, то сначала делается попытка поиска по данному маршруту, а затем Тур- бо Ассемблер выполняет поиск в каталогах, заданных в параметрах командной строки /I (в том порядке, как они указаны в командной строке). Затем он ищет файл по всем каталогам, заданным в пара- метрах /I файла конфигурации. Если в спецификации имени файла вы не указываете маршрут, то Турбо Ассемблер выполняет сначала поиск в каталогах, заданных в параметрах командной строки /I, затем - в каталогах, заданных в параметрах /I файла конфигурации, и, наконец, в текущем каталоге. Пример: TASM /I\INCLUDE /ID:\INCLUDE TEST1 Если исходный файл содержит оператор: INCLUDE MYMACS.INC то Турбо Ассемблер сначала ищет файл \INCLUDE\MYMACS.INC, затем D:\INCLUDE\MYMACS.INC. Если он еще не нашел файл, то файл с именем MYMACS.INC ищется в текущем каталоге. Если бы в исходном файле содержался оператор: INCLUDE INCS\MYMACS.INC то Турбо Ассемблер сначала искал бы включаемый файл \INCS\MYMACS.INC, затем \INCLUDE\MYMACS.INC, и, наконец D:\INCLUDE\MYMACS.INC.

Параметр /J

Функция: Определяет директиву инициализации Ассемблера. Синтаксис: /Jдиректива Примечания: Параметр /J позволяет вам определить директиву, которая будет ассемблироваться перед первой строкой исходного файла. "Директива" может представлять собой любую директиву Турбо Ассемблера, не требующую аргументов, например, .286, IDEAL, %MACS, NOJUMP и т.д. Полное описание директив Турбо Ассемблера содержится в соответствующей главе. В командной строке вы можете указать более одного параметра /J. При этом они будут обработаны слева направо. Пример: TASM /J.286 .JIDEAL TEST1 При этом ассемблируется файл TEST1.ASM с разрешенными инст- рукциями процессора 80286 и разрешением синтаксического анализа выражений в режиме IDEAL.

Параметр /KH

Функция: Задает максимально допустимое число идентификато- ров. Синтаксис: /KHnидентификаторов Примечания: Параметр /KH задает максимально допустимое число идентификаторов, которое может содержать программа. Если вы не используете данный параметр, ваша программа может содержать толь- ко до 8192 идентификаторов. Использование этого параметра позво- ляет увеличить число идентификаторов до значения "nидентификато- ров" (это значение не должно превышать 32768). Используйте данный параметр, если при ассемблировании прог- раммы вы получаете сообщение "Out of hash space" ("Буферное пространство исчерпано"). Данный параметр можно также использовать для уменьшения об- щего числа идентификаторов до значения, меньшего назначенного по умолчанию (8192). Это позволит освободить некоторое количество памяти, что может оказаться полезным, когда вы пытаетесь ассем- блировать программу, а у вас не хватает памяти. Пример: TASM /KH10000 BIGFILE Эта команда сообщает Турбо Ассемблеру, что при ассемблирова- нии файла BIGFILE нужно зарезервировать память для 10000 иденти- фикаторов.

Параметр /L

Функция: Генерирует файл листинга. Синтаксис: /L Примечания: Параметр /L указывает, что вы хотите создать файл листинга, даже если вы его не задаете в командной строке явно. Файл листинга имеет то же имя, что и исходный файл, и рас- ширение .LST. Пример: TASM /L TEST1 Данная командная строка приводит к созданию файла листинга с именем TEST1.LST.

Параметр /LA

Функция: Показывает в исходной файле код интерфейса с языком высокого уровня. Синтаксис: /LA Примечания: Параметр /LA указывает Турбо Ассемблеру, что в файле листинга нужно отразить весь генерируемый код, включая код, который генерируется в результате директивы языка высокого уровня .MODEL. Пример: TASM /LA FILE1

Параметр /M

Функция: Устанавливает максимальное число проходов Ассембле- ра. Синтаксис: /M[число_проходов] Примечания: Обычно Турбо Ассемблер работает как однопроход- ный Ассемблер. Параметр /m позволяет задать максимальное число проходов, которое Ассемблер выполнит в процессе ассемблирования. TASM автоматически определяет те случаи, когда фактически требуе- мое число проходов меньше заданного. Если максимальное число про- ходов не задано, то по умолчанию оно равно пяти. Некоторые модули могут содержать конструкции, которые будут правильно ассемблироваться только при двух проходах, либо вы можете захотеть удалить инструкции NOP, добавленные Ассемблером из-за опережающих ссылок. Если множественные проходы не разреше- ны, то для такого модуля будет выдано хотя бы одно предупреждение "Pass-dependent construction encountered" ("Встречена конструк- ция, зависящая от числа проходов"). При заданном параметре /m Турбо Ассемблер сможет ассемблировать такой код, но не сможет его оптимизировать за счет удаления пустых команд NOP, независимо от числа заданных проходов. В этом случае будет выдано предупрежде- ние "Module is pass dependent - compatibility pass was done" ("Модуль зависим от числа проходов - сделан проход для обеспече- ния совместимости"). Пример: TASM /M2 TEST1 Эта строка заставит Турбо Ассемблер при ассемблировании программы TEST1 выполнить два прохода.

Параметр /ML

Функция: Интерпретирует различие в регистрах букв идентифи- каторов. Синтаксис: /ML Примечания: Параметр /ML указывает Турбо Ассемблеру, что во всех идентификаторах нужно различать буквы разного регистра (строчные и прописные). Обычно строчные и прописные буквы рас- сматриваются, как эквивалентные, поэтому имена ABCxyz, ABCXYZ и abcxyz обозначают один и тот же идентификатор. Если вы задаете параметр /ML, то эти три идентификатора будут считаться различны- ми. Тем не менее, даже после задания параметра /ML ключевые слова Ассемблера можно вводить как в верхнем, так и в нижнем регистре. Ключевые слова представляют собой идентификаторы, встроенные в Ассемблер, которые имеют специальное значение (мнемоники инструк- ций, директивы и операторы). Пример: TASM /ML TEST1 где TEST1.ASM содержит следующие операторы: ABC DW 1 abc DW 0 ; это не дублирующий идентификатор Mov Ax,[Bp] ; в ключевых словах допускается использо- ; вать разный регистр Для модулей Паскаля параметр-переключатель /ml при использо- вании его совместно с параметром /mx имеет специальное значение. Подробнее об этом рассказывается в описании параметра /mx.

Параметр /MU

Функция: Преобразует идентификаторы в верхний регистр. Синтаксис: /MU Примечания: Параметр /MU указывает Ассемблеру, что нужно иг- норировать регистр во всех идентификаторах. По умолчанию в Турбо Ассемблере задано, что в идентификаторах все буквы нижнего ре- гистра должны преобразовываться в верхний регистр (если это не отменено с помощью директивы /ML). Пример: TASM /MU TEST1 При этом все идентификаторы будут преобразованы в верхний регистр (что задано по умолчанию): EXTRN myfunc:NEAR call myfunc ; не важно, как была ; определена функция: ; MYFUNC, Myfunс,.

Параметр /MV#

Функция: Устанавливает максимальную длину имен идентификато- ров. Синтаксис: /MV# Примечания: Параметр /mv# устанавливает максимальную длину распознаваемых TASM имен идентификаторов. Например, если задать /mv12, то TASM будет рассматривать имена ABCDEFGHIJKLL. и ABCDEFGHIJKL как одно и то же имя ABCDEFGHIJKLL. Заметим, что ми- нимальное значение, которое вы здесь можете задавать, равно 12.

Параметр /MX

Функция: Задает различимость на на строчные и прописные бук- вы (верхний и нижний регистр) во внешних и общедоступных иденти- фикаторах. Синтаксис: /MX Примечания: Параметр /MX сообщает Турбо Ассемблеру, что раз- личать регистр букв нужно только во внешних (External) и общедос- тупных (Public) идентификаторах. Все другие идентификаторы в ис- ходном файле будут интерпретироваться, как набранные в верхнем регистре. Использовать данную директиву следует при вызове процедур из других модулей, которые ассемблировались или компилировались так, что сохранилось различие в строчных и прописных буквах (например, модулей, которые компилировались в Borland C++). Пример: TASM /MX TEST1 где TEST1 содержит следующие исходные строки: EXTRN Cfunc:NEAR myproc PROC NEAR call Cfunc . . . Замечание: Использование вместе параметров /mx и /ml для идентификаторов, описанных в Паскале, имеет специальное значение. Если вы используете эти параметры вместе, иденти- фикаторы будут доступны компоновщику, как символы в верхнем регистре.

Параметр /N

Функция: Подавляет в файле листинга таблицу идентификаторов. Синтаксис: /N Примечания: Параметр /N показывает, что в конце файла лис- тинга вы не хотите использовать обычную таблицу идентификаторов. Обычно в конце файла листинга содержится полная таблица идентифи- каторов, где показаны все идентификаторы, их имена и значения. Вы должны задать файл листинга либо явным образом (в коман- дной строке), либо с помощью параметра /L. В противном случае па- раметр /N не приведет ни к каким действиям. Пример: TASM /L /N TEST1 При этом генерируется файл листинга, где показывается только генерируемый код без значений ваших идентификаторов.

Параметр /O

Функция: Генерирует оверлейный код. Синтаксис: /O Примечания: Задание параметра командной строки /o вызывает генерацию оверлейно-совместимых адресов фиксации. При ее исполь- зовании ссылки 386 к сегментам USE32 не должны выполняться, так как это может привести к неправильной работе компоновщика.

Параметр /OP

Функция: Генерирует оверлейный код для компоновщика Phar Lap. Синтаксис: /OP Примечание: Задание параметра командной строки /o вызывает генерацию оверлейно-совместимых адресов фиксации для компоновщика Phar Lap. Полученный объектный файл не будет совместимым с компо- новщиком фирмы Borland TLINK.

Параметр /P

Функция: Проверяет наличие "кода с побочными эффектами" в защищенном режиме. Синтаксис: /P Примечания: Параметр /P определяет, что вы хотите получить предупреждение при любой инструкции, генерирующей в защищенном режиме код с возможным "побочным эффектом" (impure code). Инс- трукции, перемещающие данные в память путем переопределения ре- гистра CS: в защищенном режиме рассматриваются, как некорректные, поскольку они в защищенном режиме могут работать неверно, если не принять специальных мер. Этот параметр нужно использовать только в том случае, если вы пишете программу, выполняемую на процессоре 80286, i486 или 80386 в защищенном режиме. Пример: TASM /P TEST1 где TEST1 содержит следующие операторы: .286P CODE SEGMENT temp DW ? mov CS:temp,0 ; в защищенном режиме может выпол- ; няться некорректно

Параметр /Q

Функция: Подавляет вывод записей объектного файла (.OBJ), ненужных для компоновки. Синтаксис: /Q Примечания: Параметр /q удаляет из результирующего объектно- го файла записи об авторских правах и записи зависимости файла, уменьшая тем самым его размер. Этот параметр не следует задавать при использовании программы MAKE или аналогичной программы, рабо- та которой основывается на записях зависимостей.

Параметр /R

Функция: Генерирует реальные инструкции с плавающей точкой. Синтаксис: /R Примечания: Параметр /R указывает Турбо Ассемблеру, что нуж- но генерировать реальные инструкции с плавающей точкой (вместо генерации эмулируемых инструкций с плавающей точкой). Используйте этот параметр, если вы хотите выполнять свою программу на маши- нах, оснащенных арифметическим сопроцессором 80х87. Действие данного параметр изменяет на обратное параметр /E (при этом генерируются эмулируемые инструкции с плавающей точ- кой). Если в исходном файле вы используете директиву EMUL, то она отменит действие инструкции /R, указанной в командной строке. Параметр командной строки /R имеет тот же эффект, что и ис- пользование в начале исходного файле директивы NOEMUL и совпадает с действием параметра командной строки /JNOEMUL. Пример: TASM /R SEGANT TPC /$N+ /$E- TRIG.PAS Первая команда ассемблирует модуль с реальными инструкциями с плавающей точкой. Вторая командная строка компилирует исходный модуль Паскаля с реальными инструкциями с плавающей точкой, кото- рый компонуется с объектным файлом Ассемблера.

Параметр /S

Функция: Задает последовательное упорядочивание сегментов. Синтаксис: /S Примечания: Параметр /S указывает Турбо Ассемблеру, что сег- менты в объектном файле нужно разместить в том порядке, в котором Турбо Ассемблер обнаруживает их в исходном коде. По умолчанию Турбо Ассемблер использует именно такое упорядочивание сегментов, если вы не изменили его с помощью параметра /A в командной строке или в файле конфигурации. Если с помощью директивы .ALPHA в исходном коде вы задали упорядочивание сегментов в алфавитном порядке, то эта директива отменит параметр /S, задаваемый в командной строке. Пример: TASM /S TEST1 По данной команде создается объектный файл (TEST1.OBJ), сег- менты которого упорядочены в том порядке, как они содержатся в исходном файле.

Параметр /T

Функция: Подавляет вывод сообщений при условном ассемблиро- вании. Синтаксис: /T Примечания: Параметр /T подавляет всю выводимую Турбо Ассем- блером на экран информацию, кроме предупреждений и сообщений об ошибках, возникающих в результате ассемблирования. Вы можете использовать данный параметр при ассемблировании нескольких модулей, когда на экран желательно выводить только со- общения об ошибках. Пример: TASM /T TEST1

Параметр /V

Синтаксис: /V Примечания: Параметр /V используется в целях совместимости. Он не приводит ни к каким действиям и не оказывает влияния на ас- семблирование.

Параметр /W

Функция: Управляет генерацией предупреждающих сообщений. Синтаксис: /W W-[класс_предупреждений] W+[класс_предупреждений] Примечания: Параметр /W управляет выводом Турбо Ассемблером предупреждающих сообщений. Если вы просто укажете параметр /W, то будут выводиться "слабые" предупреждения. Такие предупреждения показывают, что вы можете несколько улучшить эффективность вашей программы. Если вы зададите параметр /W- без класса предупреждений, то все предупреждения запрещаются. Если за параметром указывается класс предупреждений, то запрещаются только эти предупреждения. Каждое предупреждающее сообщение имеет идентификатор из трех букв: ALN - выравнивание сегмента в памяти. ASS - подразумевается использование 16-разрядного сегмента; BRK - требуются квадратные скобки; ICG - неэффективная генерация кода; LCO - переполнение счетчика адреса; OPI - открытый блок условия IF; OPP - открытая процедура; OPS - открытый сегмент; OVF - арифметическое переполнение; PDC - конструкция, зависящая от прохода; PQK - предполагается константа для предупреждения [const]. PRO - запись в память в защищенном режиме требует переопределения регистра CS. RES - предупреждение о резервируемом слове. TPI - предупреждение о недопустимости в Турбо Паскале. Если вы указываете параметр /W+ без класса предупреждения, то все предупреждения будут разрешены. Если вы задаете параметр /W+ с классом предупреждений из предыдущего списка, то будут раз- решены только эти предупреждения. По умолчанию Турбо Ассемблер сначала начинает ассемблирова- ние исходного файла с разрешением всех предупреждений, кроме пре- дупреждений о неэффективности кода (ICG) и предупреждений и запи- си в память в защищенном режиме (PRO). Для управления выводом определенных сообщений на заданном участке программы в файле с исходным кодом вы можете использовать директивы WARN или NOWARN. Более подробно об этих директивах рас- сказывается в главе, посвященной директивам. Пример: TASM /W TEST1 Следующий оператор в TEST1.ASM выведет предупреждающее сооб- щение, которое не появится на экране, если не указан параметр /W: mov bx,ABC ; предупреждение о неэффективности кода ABC = 1 При задании командной строки: TASM /W-OVF TEST2 если TEST2.ASM содержит: DW 1000h = 20h предупреждения генерироваться не будут.

Параметр /X

Функция: Включает в листинг блоки условного ассемблирования. Синтаксис: /X Примечания: Если при вычислении блоков IF, IFNDEF, IFDEF и т.д. получается значение FALSE, то параметр /X приводит к тому, что операторы, содержащиеся внутри условного блока, будут включе- ны в листинг ассемблирования. По данной директиве в листинг будут также включены сами директивы условного ассемблирования (обычно они в листинг не включаются). Вы должны в командной строке или с помощью параметра /L за- дать также необходимость генерации файла листинга, иначе параметр /X действовать не будет. Для переопределения параметра /x вы можете использовать ди- рективы .LFCOND, .SFCOND и .TFCOND. Пример: TASM /X TEST1

Параметр /Z

Функция: Выводит на экран наряду с сообщениями об ошибке со- ответствующие строки исходного текста. Синтаксис: /Z Примечания: Параметр /Z указывает Ассемблеру, что при гене- рации сообщения об ошибке на экран нужно вывести соответствующую строку исходного файла (где эта ошибка возникла). Вызвавшая ошиб- ку строка выводится перед сообщением об ошибке. При запрещении данного параметра Турбо Ассемблер просто выводит сообщение, опи- сывающее ошибку. Пример: TASM /Z TEST1

Параметр /ZD

Функция: Разрешает включение в объектные файлы информации о номерах строк. Синтаксис: /ZD Примечания: Параметр /ZD приводит к тому, что Турбо Ассемб- лер будет помещать в объектные файлы информацию о номерах строк. Это позволяет автономному отладчику фирмы Borland (Турбо отладчи- ку) выводить на экран текущее место в исходном коде, но не позво- ляет ему осуществлять доступ к элементам данных. Если при попытке отладки программы с помощью Турбо отладчика вам не хватит памяти, вы можете использовать параметр /ZD для од- них модулей и параметр /ZI - для других. Пример: TASM /ZD TEST1

Параметр /ZI

Функция: Разрешает включение в объектный файл информации для отладки. Синтаксис: /ZI Примечания: Параметр /ZI указывает Турбо Ассемблеру, что в объектный файл нужно вывести полную информацию для отладки. Эта информация включает в себя записи о номерах строк (для синхрони- зации вывода на экран исходного текста) и информацию о типах дан- ных, позволяющую модифицировать и проверить данные программы. Параметр /ZI позволяет вам использовать все средства Турбо отладчика для прохождения программы и проверки и изменения эле- ментов данных. Вы можете использовать параметр /ZI для всех моду- лей программы или только для тех, отладка которых вас интересует. Поскольку параметр /ZI добавляет информацию в объектные и выпол- няемые файлы, может оказаться нежелательным его использование для всех модулей программы при выполнении программы Турбо отладчиком (например, может возникать ситуация нехватки памяти). Пример: TASM /ZI TEST1

Параметр /ZN

Функция: Запрещает включение в объектный файл информацию для отладки. Синтаксис: /ZN Примечания: Параметр /zn указывает Турбо Ассемблеру, что ин- формацию для отладки в объектный файл выводить не нужно. Его по- лезно использовать для переопределения параметра /zi в файле кон- фигурации.

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

В любой момент, когда вы вводите командную строку, Турбо Ас- семблер позволяет вам задавать косвенный командный файл, с по- мощью указания перед его именем символа @. Например: TASM /DTESTMODE @MYPROJ.TA Эта команда приводит к тому, что содержимое файла MYPROJ.TA становится частью командной строки (как если бы вы ввели ее со- держимое непосредственно). Это полезное средство позволяет вам поместить наиболее часто используемые командные строки и списки файлов в отдельный файл. При этом нет необходимости помещать всю командную строку в один косвенный файл, поскольку в одной командной строке допускается использовать несколько исходных файлов с обычными аргументами, например: TASM @MYFILES @IOLIBS /DBUF=1024 Таким образом вы можете использовать длинный список стандар- тных файлов и параметров, благодаря чему можно легко изменять по- ведение Ассемблера при каждом ассемблировании. Вы можете либо поместить все имена и параметры файлов в одну строку командного файла, либо разбить их на несколько строк, как это необходимо.

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

Турбо Ассемблер позволяет вам также поместить наиболее часто используемые параметры в файл конфигурации в текущем каталоге. Таким образом, когда вы запускаете Турбо Ассемблер, он будет в текущем каталоге искать файл TASM.CFG. При работе в операционной системе DOS 3.x и старше поиск будет также выполняться в катало- ге, из которого был загружен TASM или TASMX. Если Турбо Ассемблер находит этот файл, то он будет интерпретировать его, как косвен- ный файл, и обрабатывать его в командной строке первым. Это может оказаться полезным, когда вы формируете "проект" программы, и все файлы проекта находятся в одном каталоге. При этом вы хотите, например, всегда выполнять ассемблирование с ис- пользованием эмулирования инструкций с плавающей точкой (пара- метр /E). Для этого вы можете поместить параметр в файл TASM.CFG, после чего его не нужно будет задавать каждый раз при запуске Турбо Ассемблера. Содержимое файла конфигурации имеет тот же формат, что и косвенный файл. Этот файл может содержать любую допустимую в ко- мандной строке информацию и содержать столько строк, сколько не- обходимо. Параметры обрабатываются так, как если бы они содержа- лись на одной строке. Содержимое файла конфигурации обрабатывается до всех других аргументов командной строки. Это позволяет вам отменить любой па- раметр, заданный в файле конфигурации, просто указав в командной строке параметр, который имеет противоположное действие. Напри- мер, если ваш файл конфигурации содержит параметры: /A /E и вы вызываете Турбо Ассемблер командой: TASM /S /R MYFILE где MYFILE - файл вашей программы, то ассемблирование будет вы- полнено с последовательным упорядочиванием сегментов (/S) и ре- альными инструкциями с плавающей точкой (/R), хотя в файле конфи- гурации содержатся директивы /A и /E, задающие упорядочивание сегментов по алфавитному порядку и эмулирование инструкций с пла- вающей точкой.
                       Назад | Содержание | Вперед