Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
НТУУ «Київський політехнічний інститут ім. Ігоря Сікорського»
Кафедра АПЕПС
Лабораторна робота №4
з дисципліни «Операційні системи»
«Завантаження та виконання програм DOS.
Організація програм *.ЕХЕ та *.СОМ»
Гр. ТР-15
Турлака Сергія
Перевірила
д.т.н., проф. Левченко Л.О.
КИЇВ 2022
Мета роботи:
Ознайомитися зі структурою виконуваних програм *.ЕХЕ та *.СОМ та їх образом в пам’яті.
Порядок роботи:
1. Ознайомитися зі структурою програми *.ЕХЕ та образом такої програми у пам’яті.
2. Ознайомитися зі структурою програми *.СОМ та образом такої програми у пам’яті.
3. Засвоїти особливості створення виконуваних програм *.ЕХЕ та *.СОМ.
4. Підготувати .ЕХЕ та .СОМ програми для виведення на екранповідомлення HELLO WORD! з варіантом опису даних: msg db "Hello Word!", 0Dh, Ah, '$' 0Dh – символ повернення каретки (Carriage Return), 0Ah - символ переведення ядка.
5. Продемонструвати роботу .ЕХЕ – та .СОМ-програм, пояcнити розподіл ам’яті ля цих програм.
6. У DEBUG за допомогою команди D CS:0000 ви маєте можливістьпереглянути машинний код програми для ехе-програми. 7. У DEBUG за допомогою команди D DS:100 ви маєте можливість переглянути дані.
Теоретична частина
Операційна система MS DOS передбачає два типи виконуваних програм,які мають розширення *.СОМ та *.ЕХЕ . Перед завантаженням в оперативну пам’ять СОМ- та ЕХЕ-програм DOS визначає спеціальну область оперативної пам’яті розміром 256 (100h) байт - сегментну адресу, яка називається префіксом програмного сегменту (PSP – Program Segment Prefics).
PSP може використовуватися в програмі для визначення імен файлів та параметрів з командного рядка, які вводяться при запуску програми на виконання, обсягу допустимої пам'яті, змінних оточення системи та ін. При завантаженні програми в оперативну пам’ять DOS ініціалізує як мінімум три сегментних регістри: CS, DS, SS (додатковим може бути ES).
Код та дані переміщуються з файлу на диску в оперативну пам’ять, а адреси цихсегментів заносяться у CS та DS відповідно. Сегмент стека або виділяється вобласті, що вказана в програмі, або співпадає (якщо він явно не описаний впрограмі) з самим першим сегментом програми. Адреса сегменту стекарозташовується в регістрі SS. Програма може мати декілька кодових сегментівта сегментів даних і в процесі виконання за допомогою спеціальних командздійснюється переключення між ними.
Для того, щоб адресувати одночасно два сегменти даних, наприклад, длявиконання операції пересилання з однієї області пам’яті в іншу, можнавикористовувати регістр додаткового сегмента ES. Кодовий сегмент та сегментстеку завжди визначається вмістом своїх регістрів (CS та SS), в кожний моментвиконання програми завжди використовується якийсь один кодовий сегмент таодин сегмент стека.
Усі сегменти можуть використовувати різні області пам’яті, а можутьчастково або повністю перекриватися. Кодовий сегмент повинен обов’язковоописуватися в програмі, усі інші сегменти можуть бути відсутніми. У цьомувипадку при завантаженні програми в оперативну пам’ять DOS ініціюєрегістри DS та ES значенням адреси префікса програмного сегмента PSP.Регістр SS при цьому ініціалізується значенням сегменту, що знаходитьсяодразу за PSP, тобто першого сегменту програми.
При цьому слід враховувати, що стек «зростає вниз. Тому при розміщенні у стек будь-яких значень вони можуть затерти PSP, в зв’язку зцим слід завжди сегмент стеку описувати в програмі явно та задавати для ньогорозмір, достатній для нормальної роботи. У вказівник команд ІР завантажуєтьсязсув точки входу в програму (вибирається з операнда директиви END), увказівник стека SP – зсув кінця сегмента стека
Результат роботи
Файл EXE програми
/
Файл COM програми
/
У результаті виконання двох різних EXE та COM програм маємо
/
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!