Сегментна структура програм

Сегментна структура програм

Приклад 1-1. Проста програма з трьома сегментами


; Вкажемо відповідність сегментних регістрів сегментам


; Опишемо сегмент команд


code segment; Відкриємо сегмент команд


begin: mov AX, data; Настроїмо DS


mov DS, AX; на сегмент даних;


Виведемо на екран рядок тексту


mov АН, 09h; Функція DOS виводу на екран


int 21h; Виклик DOS


mov AX, 4C00h; Функція DOS завершення програми


int 21h; Виклик DOS


code ends; Закриємо сегмент команд


; Опишемо сегмент даних


data segment; Відкриємо сегмент даних


msg db "Програма працює! $ '; що виводиться рядок


data ends; Закриємо сегмент даних


; Опишемо сегмент стека


stk segment stack; Відкриємо сегмент стека


db 256 dup (?); Відводимо під стек 256 байт


stk ends; Закриємо сегмент стека


end begin; Кінець тексту з точкою входу

mov AX, data; Настроїмо DS


mov DS, AX; на сегмент даних

Ключ / z дозволяє висновок на екран рядків вихідного тексту програми, в яких асемблер виявив помилки (без цього ключа пошук помилок довелося б проводити з лістингу трансляції).
Ключ / zi управляє включенням в об'єктний файл інформації, що не необхідної при виконанні програми, але використовуваної отладчиком.
Ключ / n пригнічує висновок в лістинг переліку символічних позначень в програмі, від чого трохи зменшується інформативність
лістингу, але скорочується його розмір.
Ті, хто стоїть далі параметри визначають імена файлів: вихідного (P.ASM), об'єктного (P.OBJ) і лістингу (P.LST). При бажанні можна в рядку виклику транслятора вказати повні імена файлів з їх розширеннями, проте необхідності в цьому немає, так як за замовчуванням транслятор використовує саме зазначені вище розширення.
Рядок виклику компоновщика має наступний вигляд:

Ключ / г пригнічує утворення лістингу компоновки, який зазвичай не потрібний.
Ключ / v передає в завантажувальний файл інформацію, використовувану отладчиком. Ті, хто стоїть далі параметри позначають імена модулів: об'єктного (Р.ОИ) і завантажувального (Р.Ехе).
Оскільки при вивченні цієї книги вам доведеться написати й налагодити велика кількість програм, доцільно створити командний файл (з ім'ям, наприклад, А.ВАТ), що автоматизує виконання однотипних операцій трансляції та компонування. Текст командного файлу в найпростішому варіанті може бути таким (в припущенні, що шлях до каталогу з пакетом TASM був вказаний в параметрі команди PATH):

Запуск підготовленої програми Р.Ехе здійснюється командою .р.ехе або просто
При завантаженні програми сегменти розміщуються в пам'яті, як показано на рис. 1.9.

Сегментна структура програм

Мал. 1.9. Образ програми в пам'яті.

Схожі статті