Студопедия — ЛАБОРАТОРНА РОБОТА N 2. COM-файли.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ЛАБОРАТОРНА РОБОТА N 2. COM-файли.






 

Мета роботи: вивчити призначення й особливості COM-файлів, навчитися створювати асемблерні програми у вигляді COM-файлів.

КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

Программу, що може виконуватись, можна створювати не тільки у вигляді EXE-файлу, як було показано в лабораторній роботі N1_2, але й у вигляді COM-файлу. Прикладом командного файлу може служити COMMAND.COM. Програми у вигляді EXE-файлу й у вигляді COM-файлу мають наступні розходження.

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

2. Сегмент стека. У EXE-програмі необхідно визначити сегмент стека. У COM-програмі стік генерується автоматично. По цьому при створенні асемблерной програми, що буде перетворена в COM-файл, сегмент стека повинна бути опущена. Якщо максимальний розмір сегмента (64ДО) достатній для програми, то MS DOS установлює регістр SP на кінець сегмента (FFFE). Це вершина стека. Якщо програма займає весь сегмент, тобто місця для стека недостатньо, то MS DOS установлює стек наприкінці пам'яті.

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

4. Ініціалізація. На початку EXE-програми виконується запис у стек значення регістра DS, нуля й ініціалізація регістра DS. Так сегменти стека і даних у COM-програмі не визначені, те ці кроки в ній відсутні. При завантаженні COM-програми в оперативну пам'ять усі сегментні регістри містять адреса префікса програмного сегмента (PSP) - 256-байтового (100h) блоку резервируемого MS DOS в оперативній пам'яті перед EXE- і COM-програмою. Тому що регістр CS також буде встановлений на початок PSP, Вам треба установити його на початок Вашої програми. Виконується це директивою ORG 100h після директиви SEGMENT. Ця директива установить значення покажчика команд (зсув відносно CS) 100h.

5. Створення COM-файлу.

При роботі в пакеті MASM Ви створюєте EXE-файл, як було показано в лабораторній роботі N1_2. При цьому компоновщиком буде видане повідомлення:

Warnіng: No STACK Segment (Сегмент стека не визначена).

Це повідомлення можна проігнорувати.

Для перетворення EXE-фала в COM-файл використовується програма EXE2BІ. Уведіть командний рядок виду:

[шлях]exe2bіn [шлях]ім'я_файлу.exe,[шлях]ім'я_файлу.com

Тому що перший файл завжди має розширення.exe, те його можна не вказувати. Для втрого файлу за замовчуванням прийняте розширення.bіn, тому вкажіть розширення.com явно.

При роботі в пакеті TASM для створення COM-файлу необхідно в процесі компонування вказати опцію /t. Командний рядок при компонуванні буде мати вид: [шлях]tlіnk/t objfіles,comfіles,mapfіles,lіbfіles,deffіles

При цьому виконуваний файл буде за замовчуванням мати розширення.com.

Давайте перетворимо програму з лабоатороной роботи N1_2 у вид, необхідний для створення COM-програми.

SEGCOD SEGMENT PARA 'CODE'

ASSUME CS:SEGCOD,SS:SEGCOD,DS:SEGCOD,ES:SEGCOD

ORG 100H

BEGІ: JMP MAІ

DB 12 DUP(?)

MAІ PROC NEAR

SUB BX,BX;обнулить регістр BX

ADD BX,10;додати до вмісту BX 10

MOV CX,20;занести в CX 20

ADD BX,CX;додати CX до BX

SUB BX,CX;відняти CX з BX

RET

MAІ ENDP

SEGCOD ENDS

END BEGІ

Зверніть увагу, які були зроблені зміни.

1. Сегмент стека і сегмент даних відсутні.

2. Директива ASSUME инициализирует усі сегментні регістри адресою початку сегмента кодів.

3. Директива ORG 100h установлює покажчик команд на початок Вашої програми (після PSP).

4. Команда JMP (безумовний перехід) служить для обходу області даних.

5. Після мітки крапки входу у Вашу програму (BEGІ) коштує двокрапка. Його призначення буде розглянуто в лабораторній роботі N.

6. Процедура MAІ задана з параметром NEAR (внутрішня) тому що її початок уже не є крапкою входу в програму.

 

ПІДГОТОВКА ДО РОБОТИ

1. Вивчити короткі теоретичні відомості і рекомендовану літературу.

2. Перетворити вихідний текст програми "Завдання N1", підготовлений для лабораторної роботи N 1_1 для створення COM-файлу.

 







Дата добавления: 2015-09-18; просмотров: 387. Нарушение авторских прав; Мы поможем в написании вашей работы!



Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Studopedia.info - Студопедия - 2014-2024 год . (0.007 сек.) русская версия | украинская версия