Смекни!
smekni.com

Мова програмування Assembler (стр. 11 из 21)

"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 ; у захищеному режимі може выполняться некоректно

Параметр Q

Функція: Придушує запису .OBJ, що не вимагаються при компоновке.

Синтаксис: /Q

Примітка: Даний параметр видаляє з одержуваного в результаті файлу (файлів) .OBJ запису про авторські права і залежність файлів. Цей параметр не слід вказувати, якщо ви використовуєте утиліту 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- без класу попереджень, то усі поперед- ження забороняються. Якщо за параметром вказується клас попереджень, то забороняються тільки ці попередження. Кожне попереджуюче повідом-лення має ідентифікатор із трьох букв:

ASS - мається на увазі використання 16-розрядного сегмента;

BRK - вимагаються квадратні дужки;

ICG - неефективна генерація коду;

LCO - переповнення лічильника адреси;

OPI - відкритий блок умови IF;

OPP - відкрита процедура;

OPS - відкритий сегмент;

OVF - арифметичне переповнення;

PDC - конструкція, що залежить від проходу;

PRO - запис у пам'ять у захищеному режимі вимагає перевизначення регістра CS;

RES - слово зарезервоване;

TPI - неприпустимо для Турбо Паскаля.

Якщо ви вказуєте параметр /W+ без класу попередження, то всі попере-дження будуть дозволені. Якщо ви задаєте параметр /W+ із класом попереджень з попереднього списку, то будуть раз вирішені тільки ці попередження.

За замовчуванням Турбо Асемблер спочатку починає асемблювання вихідного файлу з дозволом усіх попереджень, крім попереджень про неефективність коду (ICG).

Для керування висновком визначених повідомлень на заданому ділянці програми у файлі з вихідним кодом ви можете використовувати директиви WARN чи NOWARN. Більш докладно про ці директиви распозначається в Главі 3 "Довідкового посібника".

Приклад:

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 приводить до тому, що оператори, що містяться усередині умовного блоку, будуть включены в лістинг асемблирования. по даній директиві в лістинг будуть також включені самі директиви умовного асемблирования (звичайно вони в лістинг не включаються).