Сегментна структура програм
Приклад 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. Образ програми в пам'яті.