структура:
1 2 3 |
Структура com программы предельно проста - она содержит только код и данные программы, не имея даже заголовка. Размер COM-программы ограничен размером одного сегмента(64Кбайт). COM-программа всегда состоит из одного сегмента и запускается со смещением 0100h |
PSP:
1 2 3 |
Program Segment Prefix. Область памяти размером 256(0100h)байт, предшествующая программе при ее загрузке. PSP содержит данные командной строки и относящиеся к программе переменные |
DTA:
1 2 3 4 5 6 |
Disk Transfer Address Блок данных, содержащий адреса обмена данными с файлом(чтение или запись). Область DTA для работы с файлом используют многие функции, в том числе и не производящие чтение или запись в файл. Примером может служить функция 4EH(найти первый файл по шаблону), которая будет неоднократно встречаться в листингах программ. |
Загрузка COM-программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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. |