Мова програмування Assembler
p align="left">Вираження може містити кілька констант, розділених комами й обмеженими тільки довжиною рядка: FLD3 DB 11, 12, 13, 14, 15, 16, ...Асемблер визначає ці константи у виді послідовності суміжних байт. Посилання по імені FLD3 вказує на першу константу, 11, по FLD3+1 - на другу, 12. (FLD3 можна представити як FLD3+0). Наприклад команда MOV AL,FLD3+3 завантажує в регістр AL значення 14 (тичина. 0E). Вираження допускає також повторення константи в наступному форматі: [ім'я] Dn чисел-повторень DUP (вираження) ... Наступні три приклади ілюструють повторення: DW 10 DUP(?); Десять невизначених слів DB 5 DUP(14); П'ять байт, що містять тичину.14 DB 3 DUP(4 DUP(8)); Дванадцять вісімок. У третьому прикладі спочатку генерується чотири копії десяткової 8 (8888), і потім це значення повторюється три рази, даючи в pезультате дванадцять восмерок. Вираження може містити символьний чи рядок числову константу. Символьні рядки Символьний рядок використовуються для опису даних, таких як, наприклад, імена людей або заголовки сторінок. Зміст рядка відмічається одиночними лапками , наприклад, 'PC' або подвійними лапками - "PC". Асемблер переводить символьні рядки в об'єктний код у звичайному форматі ASCII. Символьний рядок визначається тільки директивою DB, в якій вказується більше двох символів у нормальній послідовності ліворуч праворуч. Отже, директива DB представляє єдиний можливий формат для визначення символьних даних. На рис. 5.1 приведений ряд прикладів. Числові константи Числові константи використовуються для арифметичних величин і для aдресів пам'яті. Для опису константи лапки не ставляться. Асемблер перетворить усі числові константи в шістнадцяткові і записує байти в об'єктному коді в зворотній послідовності - праворуч ліворуч. Нижче показані різні числові формати. Десятковий формат. Десятковий формат допускає десяткові цифри від 0 до 9 і позначається останньою буквою D, що можна не вказувати, наприклад, 125 чи 125D. Незважаючи на те, що асемблер дозволяє кодування в десятковому форматі, він перетворить ці значення в шіст. об'єктний код. Наприклад, десяткове число 125 перетвориться в тичину. 7D. Шістнадцятковий формат. Шістнадцятковий формат допускає шістнадцяткові цифри від 0 до F і позначається останньою буквою H. Оскільки асемблер думає, що з букви починаються ідентифікатори, то першою цифрою шіст. константи повинна бути цифра від 0 до 9. Наприклад, 2EH або 0FFFH, вказують на те, що асемблер перетворить відповідно в 2E і FF0F (байти в другому прикладі записуються в об'єктний код у зворотній послідовності). Двійковий формат. Двійковий формат допускає двійкові цифри 0 і 1 і позначається останньою буквою B. Двійковий формат звичайно використовується для більш чіткого представлення бітових значень у логічних командах AND, OR, XOR і TEST. Десяткове 12, тичина. C і двійкове 1100B усі генерують один і той же код: тичина. 0C або двійкове 0000 1100 в залежності від того, як ви розглядаєте вміст байта. Вісімковий формат. Вісімковий формат допускає вісімкові цифри від 0 до 7 і позначається останньою буквою Q чи O, наприклад, 253Q. На сьогодні вісімковий формат використовується дуже рідко. Десятковий формат із крапкою, що плаває. Цей формат підтримується тільки асемблером МASM. При записі символьних і числових констант потрібно пам'ятати, що, наприклад, символьна константа, визначена як DB '12', представляє символи ASCII і генерує тичина. 3132, а числова константа, визначена як DB 12, вставляє двійкове число і генерує тичина. 0C. Рис. 5.1 ілюструє директиви для визначення різних символьних рядків і числових констант. Сегмент даних був асемблюваний для того, щоб показати згенерований об'єктний код (ліворуч). ДИРЕКТИВА ВИЗНАЧЕННЯ БАЙТА (DB) З різних директив, що визначають елементи даних, найбільш корисної є DB (визначити байт). Символьне вираження в диpективе DB може містити рядок символів будь-якої довжини, аж до кінця рядка (див. FLD2DB і FLD7DB на рис. 5.1). Зверніть увагу, що константа FLD2DB містить символьний рядок 'Personal Computer'. Об'єктний код показує символи коду ASCII для кожного байта. Тичина. 20 представляє символ пробілу. Числове вираження в директиві DB може містити одну чи більше однобайтних констант. Один байт виражається двома цифpами. Найбільше позитивне шіст. число в одному байті це 7F, усі "великі" числа від 80 до FF представляють негативні значення. У десятковому численні ці межі виражаються числами +127 і -128. У прикладі на рис. 5.1 числовими константами є FLD3DB, FLD4DB, FLD5DB і FLD8DB. Поле FLD6DB представляє суміш з числових і строкових констант, які використовуються для побудови таблиці. ДИРЕКТИВА ВИЗНАЧЕННЯ СЛОВА (DW) Директива DW визначає елементи, що мають довжину в одне слово (два байти). Символьне вираження в DW обмежено двома символами, що асемблер представляє в об'єктному коді так, що, наприклад, 'PC' стає 'CP'. Для визначення символьних рядків директива DW має обмежене застосування. Числове вираження в DW може містити одне або більше двобайтних констант. Два байти представляються чотирьма тичина. цифрами. Найбільше позитивне шіст. число в двох байтах це 7FFF; усі "великі" числа від 8000 до FFFF представляють негативні значення. У десятковому численні ці межі виражаються числами +32767 і -32768. У прикладі на рис. 5.1 поля FLD1DW і FLD2DW визначають числові константи. Поле FLD3DW визначає адреса - у даному випадку зсув на адресу FLD7DB. У результаті генерується об'єктний код 0021 (R позначає перемещаемость). Перевіряючи вище по малюнку, видно, що відносна адреса поля FLD7DB дійсно 0021. Поле FLD4DW визначає таблицю з п'яти числових констант. Помітимо, що об'єктний код для кожної константи має довжину в одне слово (два байти). Для форматів директив DW, DD і DQ асемблер перетворить константи в шест. об'єктний код, але записує його в зворотній послідовності. У такий спосіб десяткове значення 12345 перетвориться в тичину.3039, але записується в об'єктному коді як 3930. ДИРЕКТИВА ВИЗНАЧЕННЯ ПОДВІЙНОГО СЛОВА (DD) Директива DD визначає елементи, що мають довжину в два cлова (чотири байти). Числове вираження може містити одну чи більше констант, кожна з який має максимум чотири байти (вісім шест. цифр). Найбільше позитивне шіст. число в чотирьох байтах це 7FFFFFFF; усі "великі" числа від 80000000 до FFFFFFFF представляють негативні значення. У десятковому численні ці межі виражаються числами +2147483647 і -2147483648. У прикладі на рис. 5.1 поле FLD3DD визначає числову константу. У полі FLD4DD генерується різниця між двома адресами, у даному випадку результатом є довжина поля FLD2DB. Поле FLD5DD визначає дві числові константи. Асемблер перетворить усі числові константи в директиві DD у шіст. представлення, але записує об'єктний код у зворотній послідовності. У такий спосіб десяткове значення 12345 перетвориться в тичину. 00003039, але записується в об'єктному коді як 39300000. Символьне вираження директиви DD обмежене двома символами. Асемблер перетворить символи і вирівнює їх ліворуч у чотирьохбайтному подвійному слові, як показано в полі FLD2DD в об'єктному коді. ДИРЕКТИВА ВИЗНАЧЕННЯ УЧЕТВЕРЕННОГО СЛОВА (DQ) Директива DQ визначає елементи, що мають довжину чотири слова (вісім байт). Числове вираження може містити одну чи більш констант, кожна з який має максимум вісім байт або 16 шіст.цифр. Найбільше позитивне тичина. число - це сімка і 15 цифр F. Для одержання представлення про величину цього числа, покажемо, що тичина. 1 і 15 нулів еквівалентний наступному десятковому числу: 1152921504606846976. У прикладі на рис. 5.1 поля FLD2DQ і FLD3DQ ілюструють числові значення. Асемблер перетворить усі числові кін станты в директиві DQ у шест. представлення, але записує об'єктний код у зворотній послідовності, як і в директивах DD і DW. Обробка асемблером символьних рядків у директиві DQ aналогічно директивам DD і DW. ДИРЕКТИВА ВИЗНАЧЕННЯ ДЕСЯТИ БАЙТ (DT) Директива DT визначає елементи даних, що мають довжину в десять байт. Призначення цієї директиви зв'язане з "упакованими десятковими" числовими величинами (див. гл.13). По директиві DT генеруються різні константи, у залежності від версії асемблера; для практичного застосування ознайомтеся з посібником з вашому aссемблера. На рис. 5.1 приведені приклади директиви DT для невизначеного елемента і для двосимвольної константи. Програма на рис.5.1 містить тільки сегмент даних. Xоча асcемблер не видає повідомлень про помилки, у таблиці LINK MAP з'явиться попередження: "Warning: No STACK Segment", а компоновщик LINK видасть "There were 1 errors detected" (Виявлена 1 помилка). Незважаючи на це попередження можна використовувати відлагоджувач DEBUG для перегляду об'єктного коду, як показано на рис. 5.2. Права сторона дампа чітко показує символьні дані, як, наприклад, "Personal Computer". БЕЗПОСЕРЕДНІ ОПЕРАНДИ На рис. 2.1 у розділі 2 було показано використання безпосередніх операндів. Команда MOV AX,0123H пересилає безпосередню шіст. константу 0123 у регістр AX. Трьохбайтний об'єктний код для цієї команди є B82301, де B8 позначає "переслати безпосереднє значення в регістр AX", a наступні два байти містять саме значення. Багато команд мають два операнди: перший може бути регістр адреси або пам'яті, а другий - безпосередньо константа. Використання безпосереднього операнда є ефективнішим ніж визначення числової константи в сегменті даних і організації зсилки на неї в операнді команди MOV, наприклад, cегмент даних: AMT1 DW 0123H? cегмент кодів: MOV AX,AMT1. Довжина безпосередніх операндів. Довжина безпосередньої константи залежить від довжини першого операнда. Наприклад, якщо випливає що безпосередній операнд є двобайтним, регістр AL має тільки один байт: MOV AL,0123H (помилка) однак, якщо безпосередній операнд коротший, ніж той що одержує операнд, як у наступному прикладі - ADD AX,25H (немає помилки) то асемблер розширює безпосередній операнд до двох байт, 0025 і записує об'єктний код у вигляді 2500. Безпосередні формати Безпосередня константа може бути шістнадцятковою, напpиклад, 0123H; десятковою, наприклад, 291 (яку асемблер конвертує в тичину.0123); чи двійковою, наприклад, 100100011В (яка перетвориться в тичину. 0123). Нижче приведений список команд, що допускають безпосередні операнди: Команди пересилання і порівняння: MOV, CMP. Арифметичні команди: ADC, ADD, SBB, SUB. Команди зрушення: RCL, RCR, ROL, ROR, SHL, SAR, SHR. Логічні команди: AND, OR, TEST, XOR. У наступних лекціях будуть пояснені команди арифметичного переносу, зрушення і логічні команди. Оскільки зараз дані приклади не призначені для виконання, у них опущене визначення стека й ініціалізація сегментних регістрів. Для створення елементів, довше ніж два байти, можна використовувати цикл чи строкові команди. ДИРЕКТИВА EQU Директива EQU не визначає елемент даних, але визначає значення, що може бути використане для постановки в інших командах. Припустимо, що в сегменті даних закодовано наступна директиву EQU: TIMES EQU 10 Ім'я, у даному випадку TIMES, може бути представлено будь-яким припустимим в асемблері ім'ям. Тепер, в якій-би команді чи директиві не використовувалося слово TIMES асемблер підставить значення 10. Наприклад, асемблер перетворить директиву - FIELDA DB TIMES DUP (?) у FIELDA DB 10 DUP (?). Ім'я, зв'язане з деяким значенням за допомогою директиви EQU, може використовуватися в командах, наприклад: COUNTR EQU 05 MOV CX,COUNTR Асемблер заміняє ім'я COUNTR у команді MOV на значення 05, створюючи операнд із безпосереднім значенням, так, нібито він закодований. MOV CX,05; Асемблер підставляє 05 Тут перевага директиви EQU полягає в тому, що багато команд можуть використовувати значення, визначене по імені COUNTR. Якщо це значення повинне бути змінене, то зміні підлягає лише одна директива EQU. Природньо, що використання директиви EQU розумне лише там, де підстановка має сенс для асемблера. У директиві EQU можна використо- вувати символічні імена: 1. TP EQU TOTALPAY 2. MPY EQU MUL Перший приклад припускає, що в сегменті даної програми визначено ім'я TOTALPAY. Для будь-якої команди, що містить операнд TP, асемблер замінить його на адресу TOTALPAY. Другий приклад показує можливість використання в програмі слова MPY замість звичайного мнемокоду MUL. Лекція 6 Транслятори мови Assembler У Турбо Асемблері існує дуже могутній і гнучкий синтаксис командного рядка. Якщо ви запустите Турбо Асемблер, не задавши ніяких аргументів, наприклад: TASM то на екран виведеться довідкова інформація, (на англійській мові) яка описує безліч параметрів командного рядка і синтаксис для специфікації асемблюваних файлів. На Рис. 3.1 показано, як вона виглядає. Turbo Assembler Version 2.0 Copyright (C) 1990 by Borland International, Inc Usage: TASM [параметри] исх_файл [,об'єкт_файл] [,лістинг] [,пер_посилання] /a,/s Упорядкованість сегментів за алфавітним порядком чи порядку вихідного коду /c Генерація в лістингу перехресних посилань /dSYM[=VAL] Визначається SYM = 0 чи SYM = VAL /e,/r Эмулируемые чи дійсні інструкції з плавающей крапкою /h,/? Виводиться дана довідкова інформація /lPATH файли, що включаються, шукаються по маршруті, обумовленому PATH /jCMD Визначає початкову директиву Асемблера (напримір, jIDEAL) /kh#,/ks# Потужність хеш-таблицы #, потужність обсягу рядка # /l,/la Генерація лістинга: l=звичайний лістинг, la=розширенаный /ml,/mx,/mu Розрізнення в регістрі букв ідентифікаторів: ml=усі, mx=глобальні, mu=не розрізняються /mv# Задає максимальну довжину ідентифікаторів /m# Дозволяє виконання декількох проходів для зодоволення випереджальних посилань /n Придушення в лістингах таблиці символів (ідентифікаторів) /p Перевірка перекриття сегмента коду в захищеному режимі /q Придушення записів .OBJ, що не вимагаються при компоновке /t Придушення повідомлень при успішному асемблировании /w0,/w1,/w2 Завдання рівня попередження: w0=немає попереджень, w1=w2=є попередження /w-xxx,/w+xxx чи Заборона дозвіл попередження типу xxx /x Включення в лістинги блоків умовного асемблирования /zi,/zd Інформація про ідентифікатори для налагодження: zi=підлоганая, zd=тільки про номери рядків. За допомогою параметрів командного рядка ви можете задавати ім'я одного чи декількох асемблируемых файлів, а також параметри, керуючі їх асемблированием. Загальний вид командного рядка виглядає в такий спосіб: TASM файли [; файли]... Крапка з коми після лівої квадратної дужки дозволяє вам в одному командному рядку асемблювати кілька груп файлів. За бажанням ви можете задати для кожної групи файлів різні параметри, наприклад: TASM /E FILE1; /A FILE2 У загальному випадку група файлів у командному рядку може мати вигляд: [параметр]...исх_файл [[+] вихідний_файл]... [,[об'єктний_файл] [, [файл_лістинга], [, [файл_перехресних_посилань]] Цей синтаксис показує, що група файлів може починатися з будь-якого параметра, що ви хочете застосувати до цих файлів а потім можуть випливати файли, що ви хочете асемблировать. Ім'ям файлу може бути одне ім'я файлу, або ви можете використовувати звичайні трафаретні символи DOS * і ? для завдання групи ассемблируемых файлів. Якщо розширення імені файлу не зазначено, Турбо Асемблер використовує за замовчуванням розширення ".ASM". 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): /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 ; у захищеному режимі може выполняться некоректно Параметр 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 використовується з метою сумісності. Він не приводить ні до яких дій і не робить впливу на ассемблирование.
Страницы: 1, 2, 3, 4, 5, 6
|