Рубрики
Windows информация

Структура загрузки com программы

структура:

Структура com программы предельно проста - она содержит только код и данные программы, не имея даже заголовка.
Размер COM-программы ограничен размером одного сегмента(64Кбайт).
COM-программа всегда состоит из одного сегмента и запускается со смещением 0100h

PSP:

Program Segment Prefix.
Область памяти размером 256(0100h)байт, предшествующая программе при ее загрузке.
PSP содержит данные командной строки и относящиеся к программе переменные

DTA:

Disk Transfer Address
Блок данных, содержащий адреса обмена данными с файлом(чтение или запись).
Область DTA для работы с файлом используют многие функции, в том числе и не 
производящие чтение или запись в файл.
Примером может служить функция 4EH(найти первый файл по шаблону), которая будет
неоднократно встречаться в листингах программ.

Загрузка COM-программы:

0) Определяется сегмент адрес свободного участка памяти достаточного 
для размещения программы размера.
1) Создается и заполняется блок  памяти для переменных сред.
2) Создается блок памяти PSP и программы.
сегмент:0000h - PSP
сегмент:0100h - программа
В поля PSP заносятся соответствующие  значения
3) Устанавливается адрес DTA равным PSP:0080h
4) Загружается COM-файл с адреса PSP-0100h
5) Значение регистра AX устанавливается в соответствии с параметрами командной строки.
6) Регистры DS, ES и SS устанавливаются на сегмент PSP и программы (PSP:0000h)
7) Регистр SP  устанавливается на конец сегмента, после чего в стек записывается 0000h.
8) Происходит запуск программы с адреса PSP:0100h.