Студопедия Главная Случайная страница Обратная связь

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

ЛАБОРАТОРНА РОБОТА 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; просмотров: 407. Нарушение авторских прав; Мы поможем в написании вашей работы!




Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Метод Фольгарда (роданометрия или тиоцианатометрия) Метод Фольгарда основан на применении в качестве осадителя титрованного раствора, содержащего роданид-ионы SCN...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

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