47621 (Мова програмування Assembler), страница 3

2016-07-30СтудИзба

Описание файла

Документ из архива "Мова програмування Assembler", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47621"

Текст 3 страницы из документа "47621"

Лекція 4

  1. Поняття "об'єктного файлу" та "виконуваного модуля"

  2. Архітектура виконуваного модуля

  3. Поняття "компонування"

  4. Види заголовків виконуваних файлів та огляд видів форматів виконуваних модулів та об’єктних файлів

1. Поняття "об’єктного файлу" та "виконуваного модуля"

Об’єктним файлом називається файл, який містить виключно машинний код без будь-якої прив'язки до особливостей операційної системи.

Виконуваним модулем називається такий об’єктний файл, якому передує так званий заголовок, який вказує, яким чином операційна система повинна виконувати цей код.

2. Архітектура виконуючого модуля

OBJ-модуль - більш наближений до виконавчих форм, але ще не готовий до виконання. Крок компонування включає перетворення OBJ-модуля в EXE (здійсненний) модуль, що містить машинний код. Програма LINK, що знаходиться на диску DOS, виконує наступне:

1. Завершує формування в OBJ-модулі адрес, що залишився невизначеним після асемблювання. В багатьох наступних програмах такі адреси асемблер відмічаєяк -і-іR.

2. Компонує окремо, якщо необхідно, більше одного асемблюваного модуля в одну завантажувальну (здійсненну) програму; можливо дві чи більше асемблерних програм, або асемблерну програму з програмами, написаними на мовах високого рівня, таких як Паскаль чи Бейсік.

3. Ініціалізує EXE-модуль командами завантаження для виконання.

Після компоновки OBJ-модуля (одного чи більше) у EXE-модуль, можна виконати EXE-модуль будь-яку кількість раз. Але, якщо необхідно внести деякі зміни в EXE-модуль, варто скорегувати вихідну програму, асемблювати її в інший OBJ-модуль і виконати компоновку OBJ-модуля в новий EXE-модуль. Навіть, якщо ці кроки поки залишаються незрозумілими, ви зрозумієте, що, одержавши небагато навичок, весь процес підготовки EXE-модуля буде доведений до автоматизму. Помітьте: визначені типи EXE-програм можна перетворити в дуже ефективні COM-програми. Якщо в результаті асемблюваня не виявлено помилок, то cлідуючий крок - компоновка об'єктного модуля. Файл EXASM1.OBJ містить тільки машинний код у шістнадцятковій формі. Оскільки програма може завантажуватися майже в будь-яке місце пам'яті для виконання, тому асемблер може не визначити всі машинні адреси. Крім того, можуть використовуватися інші (під) програми для об'єднання з основними. Призначенням програми LINK є завершення визначення адресних посилань і об'єднання (якщо потрібно) декількох програм. Для виконання можна також створювати COM-файли. Прикладом часто використовуваного COM-файлу є COMMAND.COM. Програма EXE2BIN.COM в оперативній системі DOS перетворить EXE-файли в COM-файли. Фактично ця програма створює BIN (двійковий) файл, тому вона і називається "перетворювач EXE у Вin (EXE-to-BIN)". Вихідний Вin-файл можна переназвати у COM-файл.

РОЗХОДЖЕННЯ МІЖ ПРОГРАМАМИ В EXE і COM-файлах

Незважаючи на те, що EXE2BIN перетворить EXE-файл у COM-файл, існують визначені розходження між програмою, виконуваної як EXE-файл, і програмою, виконуваної як COM-файл.

Розмір програми.

EXE-програма може мати будь-який розмір, у той час як COM-файл обмежений розміром одного сегмента і не перевищує 64ДО. COM-файл завжди менший, ніж відповідаючий EXE-файл; одна з причин цього - відсутність у COM-файлі 512-байтового початкового блоку EXE-файлу.

Сегмент стека.

У EXE-програмі визначається сегмент стека, у той час як COM-програма генерує стек автоматично. У такий спосіб при створенні асемблерної програми, яка буде перетворена в COM-файл, стек повинен бути опущений.

Сегмент даних.

У EXE програмі звичайно визначається сегмент даних, а регістр DS ініціалізується адресою цього сегмента. У COM-програмі всі дані повинні бути визначені у сегменті коду. Нижче буде показаний простий спосіб рішення цього питання.

Ініціалізація.

EXE-програма записує нульове слово в стек та ініціалізує регістр DS, тому що COM-програма не має ні стека, ні сегмента даних, де ці кроки відсутні. Коли COM-програма починає працювати, усі сегментні регістри містять адресу префікса програмного сегмента (PSP), - 256-байтового (тичина. 100) блоку, що резервується операційною системою DOS безпосередньо перед COM чи EXE програмою в пам'яті. Оскільки адресація починається з точки зсуву 100 від початку PSP, то в програмі після оператора SEGMENT кодується директива ORG 100H.

Обробка.

Для програм у EXE і COM форматах виконується асемблювання для одержання OBJ-файлу, і компоновка для одержання EXE-файлу. Якщо програма створюється для виконання як EXE-файл, то її вже можна виконати. Якщо ж програма створюється для виконання як COM-файл, то компоновщиком буде видане повідомлення:

Warning: No STACK Segment

(Попередження: Сегмент стека не визначено)

Це повідомлення можна ігнорувати, тому що визначення стека у програмі не передбачалося. Для перетворення EXE-файлу у COM-файл використовується програма EXE2BIN. Припустимо, що EXE2BIN мається на дисководі A, а скомпонований файл по імені CALC.EXE - на дисководі B. Уведіть EXE2BIN B:CALC,B:CALC.COM. Оскільки перший операнд завжди припускає EXE файл, то можна не кодувати тип EXE. Другий операнд може мати інше ім'я (CALC.COM). Якщо не вказувати тип COM, то EXE2BIN прийме за замовчуванням тип BIN, який згодом можна перейменувати в COM. Після того як перетворення буде виконано, можна видалити OBJ і EXE-файли. Якщо вихідна програма написана для EXE-формату, то можна, використовуючи редактор, замінити команди у вихідному тексті для COM файлу.

ОСНОВНІ ПОЛОЖЕННЯ НА ПАМ'ЯТЬ

- Обсяг COM-файлу обмежений 64ДО.

- COM-файл менший, ніж відповідний EXE-файл.

- Програма, написана для виконання в COM-форматі не містить стека і сегмента даних і не вимагає ініціалізації регістра DS.

- Програма, написана для виконання в COM-форматі, використовує директиву ORG 100H після директиви SEGMENT для виконання з адреси після префікса програмного сегмента.

- Програма EXE2BIN перетворить EXE-файл у COM-файл, обумовлений указівкою типу COM у другому операнді.

- Операційна система DOS визначає стек для COM-програми або наприкінці програми, якщо дозволяє розмір, або ж наприкінці пам'яті.

3. Поняття "компонування"

Об'єктний лінкер призначений для створення виконавчих файлів з об'єктних файлів, сформованих MASM чи компіляторами C або PASCAL. LINK формує пересувний виконавчий код, позначений інформацією переміщення, використовуючи яку, MS-DOS зможе завантажити в пам'ять і виконати відповідну програму. LINK може формувати програми, що містять понад 1М коду і даних. Сприймаючи на вхід 2 файли, LINK може формувати 2 вихідних файли, як показано на рис.3.1.

Рис. 3.1. Робота LINK.

Розширення імен файлів, показані на малюнку, приймаються за замовчуванням. Об'єктний файл містить об'єктні модулі програмних сегментів, сформовані MASM чи компілятором мови високого рівня. Бібліотеки містять набори модулів, на яких можуть посилатися програмні сегменти в об'єктному файлі. Бібліотечні файли формуються за допомо- гою утиліти LIB. Основним результатом роботи LINK є виконавчий файл, що містить програму у виді, придатному для завантаження в пам'ять і виконання. Деякі особливості формування виконавчого файлу описані в п.3.4. Файл плану є необов'язковим і містить, якщо він формується, деяку діагностичну і службову інформацію, яка потім за допомогою утиліти MAPSYM може бути використана в процесі налагодження програми. Файл плану містить імена, завантажувальні адреси і довжини усіх сегментів програми. Крім того, сюди входять імена і завантажувальні адреси груп у програмі, адреса крапки входу, а також повідомлення про можливі помилки.

Якщо задана опція /MAP, у файл включаються імена загальних символів і їхні завантажувальні адреси. Якщо задані опції /HIGH чи /DSALLOCATE і обсяг програми та даних у сукупності не перевищує 64ДО, план може містити символи з незвичайно великими адресами сегментів. Ці адреси відбивають змінні, розташовані нижче дійсного початку сегмента.

Приклад:

FFF0:0A20 TEMP

Адреса TEMP - 00:920h.

Необхідно мати те, через що, крім двох вихідних файлів, LINK може формувати тимчасовий файл з ім'ям VM.TMP. Це відбувається в тому випадку, коли лінкеру не вистачає оперативної пам'яті. Створення файлу VM.TMP супроводжується повідомленням на консолі і завжди здійснюється у поточному підзаголовку. У цьому випадку не можна використовувати опцію /PAUSE і знімати дискету, якщо вона знаходиться на активному драйві, до того, як LINK не знищить файл VM.TMP. Не реко- мендується створювати в поточному підзаголовку файл із таким ім'ям, що у цьому випадку може бути зіпсований.

3. Запуск LINK

Запуск LINK може бути здійснений трьома способами:

1. З використанням підказок.

2. За допомогою командного рядка DOS.

3. З використанням файлу відповіді.

Для запуску LINK з використанням підказок необхідно ввести командний рядок, що містить тільки ім'я лінкера LINK зі специфікацією підзаголовка, якщо він потрібен. LINK перейде в діалоговий режим і серією підказок запросить у користувача інформацію про наступні файли (відповідь полягає в наборі необхідних символів і натисканні клавіші ENTER):

1. Ім'я об'єктного файлу. Якщо при відповіді не зазначене розширення, передбачається OBJ. Якщо потрібно визначити кілька файлів, їхні імена розділяються символом + . Якщо усі імена не містяться на одному рядку, введення імен можна продовжити, поставивши символ + в останню позицію поточного рядка. У цьому випадку LINK повторить запит для введення додаткових імен.

2. Ім'я виконавчого файлу. Якщо при відповіді не зазначено розширення, передбачається EXE. Базове ім'я виконавчого файлу за замовчуванням збігається з базовим ім'ям об'єктного файлу.

3. Ім'я файлу плану модуля. Якщо при відповіді не зазначене розширення, передбачається MAP. Базове ім'я по умовчанню NUL.

4. Ім'я бібліотеки. Якщо при відповіді не зазначене розширення, передбачається LIB. Можна задавати кілька імен бібліотек за аналогією з OBJ-файлами.Якщо, не вводячи імені, відразу натиснути ENTER,бібліотеки використовуватися не будуть.У кожній відповіді після символу / можуть бути задані опції LINK, що описані в п.3.3. Якщо в якій-небудь відповіді специфікований символ ";", LINK вийде з діалогового режиму й встановить, що залишилися імена за замовчуванням з наступного списку:

.EXE

NUL.MAP

Бібліотеки не використовуються.

У будь-якій відповіді також можуть бути задані відповіді на кілька наступних підказок. У цьому випадку одна відповідь від іншої відокремлюється комами. Для запуску LINK за допомогою командного рядка, необхідно ввести командну стрічку наступного виду:

LINK [,[]

[,[][,[]]]][][;]

Символ ; може бути специфікований у будь-якому місці командного рядка до того, як були визначені усі файли. У цьому випадку імена невизначених файлів, що залишилися, приймаються за замовчуванням із приведеного вище списку. З цього ж списку приймаються за замовчуванням імена файлів, специфікація яких у командному рядку опущена (за допомогою зайвої коми). Якщо в командному рядку виявлена помилка, про це повідомляється через консоль, і LINK переходить у діалоговий режим. Якщо специфікована хоча б одна з опцій /MAP чи /LINENUMBERS, файл плану створюється незалежно від того, чи зазначене його ім'я в командному рядку. У цьому випадку, якщо його ім'я не специфіковане, воно приймається за замовчуванням - .MAP. При вказівці декількох об'єктних файлів бібліотек їхні імена розділяються символами + . Якщо визначені не усі файли (але не опущені за допомогою зайвої коми, і не специфікована установка імен, що залишилися, за замовчуванням указівкою символу ";"), LINK входить у діалоговий режим і запитує які залишилися невизначеними імена через підказки.

Специфікації імен файлів і опції можуть бути заздалегідь занесені в спеціальний файл відповіді. Ім'я цього файлу з попереднім символом @ і вказівкою шляху пошуку, якщо він потрібен, може бути поміщене в будь-якому місці відповіді на підказку чи командного рядка і трактується так, аби вміст файлу відповіді був безпосередньо вставлений в це місце. Важливо, однак, пам'ятати, що комбінація символів CARRIAGE-RETURN / LINE-FEED у файлі відповіді інтерпретується як ENTER у підказці чи кома в командному файлі. Загальний вид файлу відповіді:

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5193
Авторов
на СтудИзбе
433
Средний доход
с одного платного файла
Обучение Подробнее