Параметри командного рядка
Необов'язкові параметри командного рядка дозволяють вам управлять поводженням Асемблера, а також тим, яку інформацію він виводить на екран, у лістинг і об'єктний файл. У Турбо Асемблері передбачено деякі параметри, що не виконують ніяких дій, а використовуються тільки для сумісності поточної версії TASM з попередніми версіями MASM (макроасемблер фірми Microsoft):
/B Задає розмір буфера
/V Виводить на екран додаткову статистику
Ви можете задавати параметри, що представляють собою будь-яку комбінацію букв у верхньому і нижньому регістрі. Крім того, параметри можна задавати в будь-якому порядку (крім параметрів /I і /J), вони будуть при цьому оброблятися послідовно. При використанні параметра /D потрібно бути уважним: ідентифікатори треба визначити до того, як вони будуть використані в наступних параметрах /D.
Примітка: за допомогою директив, зазначених у вашому исходном коді, ви можете скасувати еквівалентні їм параметри Асемблера.
На Рис. 3.1 (см. вище) приведений список параметрів Турбо Ассемблера. Далі ці параметри описані докладно (їх можна також задавати буквами в нижньому регістрі).
Параметр /A
Функція: Задає упорядкованість сегментів по алфавітному порядку.
Синтаксис: /A
Примітки: Параметр /A вказує Турбо Асемблеру, що сегменты в об'єктному файлі повинні бути розміщені в алфавітному порядке. Це еквівалентно використанню у вихідному коді директиви .ALPHA. Цим параметром звичайно приходиться користатися тоді, коли ви хочете асемблировать вихідний файл, написаний для ранніх версій асемблеров фірм Microsoft чи IBM.
Параметр /S змінює дія даного параметра на зворотне, зберігаючи використовуване за замовчуванням послідовне упорядочивание сегментів.
Якщо у вихідному файлі ви задаєте за допомогою директиви .SEQ послі довне упорядочивание сегментів, то вона скасує действие параметра /A, що задається в командному рядку.
Приклад : TASM /A TEST1
Даний командний рядок створює об'єктний файл TEST1.OBJ, сегменти якого упорядковуються за абеткою.
Параметр /B
Синтаксис: /B
Примітки: Параметр /B використовується тільки з метою совместимости з іншими версіями. Він не приводить ні до яких дій і не робить впливу на асемблювання.
Параметр /C
Функція: Дозволяє включати в лістинг перехресні посилання.
Синтаксис: /C
Примітки: Параметр /C дозволяє включення у файл лістинга інформації про перехресні посилання. Турбо Асемблер включає информацію про перехресні посилання в таблицю ідентифікаторів наприкінці файлу лістинга. Щоб одержати інформацію про перехресні посилання, вам потрібно також явно задати в командному рядку генерацію файлу лістинга чи викори- стовувати для дозволу формування файлу лістинга параметр /L.
Для кожного ідентифікатора в перехресних посиланнях вказується рядок, у якому він визначений і всього рядка, де йдеться про його посилання.
Параметр /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. Звичайно цей параметр варто викори- стовувати тільки в тому випадку, якщо ваш модуль на Асемблері є частиною програми, написаної мовою високого рівня, у якій використовується бібліо-тека емуляціі роботи з крапкою, що плаває, (емуляцію операцій із пла-ваючою крапкою підтримують Турбо Сі, Турбо Паскаль, Турбо Бейсік і Турбо Пролог). Ви не можете просто скомпонувати програму на Асемблері з бібліотекою емуляціі, тому що передбачається, що бібліотека повинна ініціалізуватися початковим кодом компілятора.
Параметр /R змінює дію даного параметра на зворотню, дозволяючи асемблювання дійсних інструкцій із плаваючою крапкою, що можуть виконуватися арифметичним співпроцесором. Якщо у вихідному файлі ви використовуєте директиву NOEMUL, то вона скасує дію параметра /E у командному рядку.
Параметр командного рядка /E робить ту ж дію, що і використання на початку вихідного файлу директиви EMUL, і еквівалентний параметру командного рядка /JEMUL.
Приклад:
TASM /E SEGANT
TCC -f TRIG.C SEGANT.OBJ
Параметр /H чи /?
Функція: Виводить на екран дисплея довідкову інформацію.
Синтаксис: /H чи /?
Примітки: Параметр /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 і т.д. Повний опис директив Турбо Асемблера міститься в "Довідковому посібнику" у Главі 3.
У командному рядку ви можете вказати більше одного параметра /J. При цьому вони будуть оброблені ліворуч праворуч.
Приклад:
TASM /J.286.JIDEAL TEST1
При цьому асемблюється файл TEST1.ASM з дозволеними інструкціями процесора 80286 і дозволом синтаксичного аналізу виражень у режимі IDEAL.
Параметр /KH
Функція: Задає максимально припустиме число ідентифікаторів.
Синтаксис: /KHn-ідентифікаторів
Примітки: Параметр /KH задає максимально припустиме число ідентифікаторів, що може містити програма. Якщо ви не використовуєте даний параметр, ваша програма може містити толь до до 8192 іденти- фікаторів. Використання цього параметра дозволяє збільшити число ідентифікаторів до значення "n-ідентифікаторів" (це значення не повинне перевищувати 32768).
Використовуйте даний параметр, якщо при асемблюванні програми ви отримаєте повідомлення "Out of hash space" (буферний простір вичерпано).
Даний параметр можна також використовувати для зменшення простішого числа ідентифікаторів до значення, меншого призначеного по умовчанню (8192). Це дозволить звільнити деяку кількість пам'яті, що може виявитися корисним, коли ви намагаєтеся ассемблювати програму, а у вас не вистачає пам'яті.
Приклад:
TASM /KH10000 BIGFILE
Параметр /KS
Функція: Даний параметр задає максимальний розмір строкового просто- ру Турбо Асемблера.
Синтаксис: /KHkбайт
Примітки: Звичайно розмір рядка визначається автоматично і набудо- вувати його не потрібно. Однак якщо у вас існує файл результату, що приводить до повідомлення "Out of string space" (не вистачає строкового простору), те за допомогою даного параметра ви можете збільшити строковий простір. Спробуйте почати з значення 100 і збільшувати його, поки ваша програма не буде ассемблироваться без помилки. Максимально припустиме значення (у килобайтах) - 255.
Приклад:
TASM /KS150 SFILE
Параметр /L
Функція: Генерує файл лістинга.
Синтаксис: /L
Примітки: Параметр /L вказує, що ви хочете створити файл лістинга, навіть якщо ви його явно не задаєте в командному рядку . Файл лістинга має те ж ім'я, що і вихідний файл, і розширення LST.
Приклад:
TASM /L TEST1
Даний командний рядок приводить до створення файлу лістинга з ім'ям TEST1.LST.
Параметр /LA
Функція: Показує у вихідної файлі код інтерфейсу з мовою високого рівня.
Синтаксис: /LA
Примітки: Параметр /LA вказує Турбо Асемблеру, що в файлі лістинга потрібно відбити весь генерируемый код, включаючи код, який генерується в результаті директиви мови високого рівня .MODEL.
Приклад:
TASM /LA FILE1
Параметр /M
Функція: Задає максимальне число проходів Асемблера.
Синтаксис: /M[число_проходів]
Примітки: Звичайно Турбо Асемблер працює, як однопрохідный асемблер. Необов'язковий параметр /m дозволяє вам задати максимальне число прохо- дів, що Асемблер повинний виконувати в процесі асемблирования. Турбо Асемблер TASM автоматично определяет, що він може виконати менше заданого числа проходів.
Якщо ви не вказуєте явне число проходів, то за замовчуванням ис-користається значення 5. Деякі модулі містять конструкції, що правильно ассемблируются тільки при виконанні двох проходів. Якщо не дозволено виконувати кілька проходів, те такий модуль приведе до генерації принаймні одного попереджуючого повідомлення:
"Pass-dependent construction encountered"
(виявлена конструкція, що залежить від проходу)
Якщо зазначений параметр /m, то Турбо Асемблер буде правильно асемблювати такий модуль, але не буде оптимізовувати код програми, видаляючи операції NOP (незалежно від зазначеного числа проходів). У цьому випадку виводиться повідомлення:
"Module is pass dependent - compatibility pass was done"
(модуль залежить від проходу - виконаний прохід для сполучення)
Приклад:
TASM /M2 TEST1
Ця команда вказує TASM, що асемблюваня модуля TEST1 потрібно виконувати в два проходи.
Параметр /ML
Функція: Інтерпретує розходження в регістрах букв ідентифікаторів.
Синтаксис: /ML
Примітки: Параметр /ML вказує Турбо Асемблеру, що в всіх ідентифі- каторах потрібно розрізняти букви різного регістра (рядкові і прописні). Звичайно рядкові і прописні букви рассматриваются, як еквівалентні, тому імена ABCxyz, ABCXYZ і abcxyz позначають той самий ідентифікатор. Якщо ви задаєте параметр /ML, те ці три ідентифікатори будуть вважатися різними. Проте, навіть після завдання параметра /ML ключові слова Асемблера можна вводити як у верхньому, так і в нижньому регістрі. Ключові слова являють собою идентификаторы, убудовані в Асемблер, що мають спеціальне значення (мнемоніки інструкцій, директиви й оператори).
Приклад:
TASM /ML TEST1
де TEST1.ASM містить наступні оператори:
ABC DW 1; це не дублюючий ідентифікатор
abc DW 0; у ключових словах допускається використовувати різний
Mov Ax,[Bp] регістр
Параметр /MU
Функція: Перетворить ідентифікатори у верхній регістр.
Синтаксис: /MU
Примітки: Параметр /MU вказує Асемблеру, що потрібно игнорировать регістр у всіх ідентифікаторах. За замовчуванням у Турбо Асемблере задано, що в ідентифікаторах усі букви нижнього регистра повинні перетворю- ватися у верхній регістр (якщо це не скасовано за допомогою директиви /ML).
Приклад:
TASM /MU TEST1
При цьому всі ідентифікатори будуть перетворені у верхній регістр (що задано за замовчуванням):
EXTRN myfunc:NEAR
call myfunc;
не важливо, як була визначена функція: MYFUNC, Myfunk,...
Параметр /MV#
Функція: Задає максимальну довжину ідентифікаторів.
Синтаксис: /MV#
Примітки: Даний параметр задає максимальну довжину идентифи- каторов, що буде розрізняти TASM. Наприклад, при завданні параметра /mv3 TASM буде інтерпретувати ідентифікатори ABCC і ABCD, як той самий ідентифікатор.
Параметр /MX
Функція: Задає розрізнення на на рядкові і прописні букви (верхній і нижній регістр) у зовнішніх і загальнодоступних идентификаторах.
Синтаксис: /MX
Примітки: Параметр /MX повідомляє Турбо Асемблеру, що различать регістр букв потрібно тільки в зовнішніх (External) і общедоступных (Public) ідентифікаторах. Всі інші ідентифікатори в исходном файлі будуть інтерпретуватися, як набрані у верхньому регістрі.
Використовувати дану директиву випливає при виклику процедур з інших модулів, що асемблировались чи компілювалися так, що збереглося розходження в рядкових і прописних буквах (наприклад, модулів, що компілювалися в Турбо Сі).
Приклад:
TASM /MX TEST1
де TEST1 містить наступні вихідні рядки:
EXTRN Cfunc:NEAR
myproc PROC NEAR
call Cfunc
Параметр /N
Функція: Придушує у файлі лістинга таблицю ідентифікаторів.
Синтаксис: /N
Примітки: Параметр /N показує, що наприкінці файлу листинга ви не хочете використовувати звичайну таблицю ідентифікаторів. Звичайно напри- кінці файлу лістинга міститься повна таблиця ідентифікаторів, де показані всі ідентифікатори, їхні імена і значення.
Ви повинні задати файл лістинга або явно (у командной рядку), або за допомогою параметра /L. У противному випадку параметр /N не приводить до якихось дій.
Приклад:
TASM /L /N TEST1
Параметр /P
Функція: Перевіряє наявність "некоректного" коду в захищеному режимі.
Синтаксис: /P
Примітки: Параметр /P визначає, що ви хочете одержати попередження при будь-якій інструкції, що генерує в захищеному режимі "некоректний" (impure) код. Інструкції, що переміщають данийные в пам'ять шляхом перевизначення регістра CS: у захищеному режимі розглядаються, як некоректні, оскільки вони в захищеному режимі можуть працювати невірно, якщо не прийняти спеціальних мір.
Цей параметр потрібно використовувати тільки в тому випадку, якщо ви пишете програму, виконувану на процесорі 80286 чи 80286 у захищеному режимі.
Приклад:
TASM /P TEST1
де TEST1 містить наступні операторы:
.286P
CODE SEGMENT
temp DW ?
mov CS:temp,0 ; у захищеному режимі може выполняться некоректно