Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО_экзамен.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
500.22 Кб
Скачать

3. Psp текущей задачи

Для программы, вызванной на выполнение, DOS выделяет блок памяти, называемый программным сегментом. Программный сегмент всегда начинается на границе параграфа. В начале программного сегмента DOS строит PSP (Program Segment Prefix - Префикс Программного Сегмента), который занимает 256 байт. (Для построения PSP в DOS имеются функции 0x26, 0x55, но это чисто внутренние функции DOS, мы оставим их без внимания).

Программы могут получить из PSP такую информацию, как параметры командной строки при запуске, размер доступной памяти, найти сегмент области переменных среды и т.д.

Структура PSP

Адрес сегмента psp иногда называют идентификатором процесса или PID. Каждая программа, работающая под управлением MS-DOS, называется процессом. Каждому процессу соответствует уникальный PID, по которому процессы различаются опеpационной системой. Адрес сегмента psp всегда совпадает с PID.

PSP - это управляющая область в 256 байт, которая строится в памяти в начале каждой программы. Она содержит различные поля, используемые ДОС для управления выполнением программы. В операциях DOS по управлению программами, данными и памятью программа представляется прежде всего адресом своего PSP. Этот адрес в системе часто именуется. Функции 0x51, 0x62 позволяют программе получить сегментный адрес активного PSP.

00h

2 БАЙТА

ПРЕРЫВАНИЕ ПРОГРАММЫ.

Первые два байта psp всегда содержат значения CD и 20. Эти два шестнадцатеричных числа являются кодом прерывания "нормальное завершение программы" (INT 20H).

02h

СЛОВО

ГРАНИЦА ПАМЯТИ.

В поле находятся начальные адреса сегментов (записанные в "обратном порядке") свободных участков памяти (не занятые выполняемыми программами пользователя).

04h

БАЙТ

Резерв

05h

5 БАЙТ

ДИСПЕТЧЕР ФУНКЦИЙ.

0Ah

ДВ. СЛОВО

АДРЕС ПРЕРЫВАНИЯ.

В поле (в "обратном" порядке) находится адрес, на который передается управление при завершении работы программы.

0Eh

ДВ. СЛОВО

ЗАПИСЬ Ctrl-Break.

Поле содержит адрес (записанный в "обратном" порядке), по которому передается управление при нажатии клавиш Ctrl-Break.

12h

ДВ. СЛОВО

ЗАПИСЬ КРИТИЧЕСКОЙ ОШИБКИ.

Поле содержит адрес (в "обратном" порядке), по которому передается управление в случае критической ошибки.

16h

СЛОВО

PSP ВЫЗЫВАЮЩЕЙ ПРОГРАММЫ.

В поле хранится адрес сегмента psp вызывающей программы (в "обратном" порядке).

18h

20 БАЙТ

ТАБЛИЦА ССЫЛОК НА УПРАВЛЯЮЩУЮ ЗАПИСЬ ФАЙЛА.

Поле используется для хранения ссылок на управляющие записи файлов, занятых в данном процессе.

2Ch

СЛОВО

АДРЕС СРЕДЫ.

Поле содержит адрес сегмента (в "обратном" порядке) операционной среды данной программы.

2Eh

ДВ. СЛОВО

Резервируются для системного пользования.

32h

СЛОВО

РАЗМЕР ТАБЛИЦЫ ССЫЛОК НА УПРАВЛЯЮЩУЮ ЗАПИСЬ ФАЙЛА.

В поле содержится размер памяти, занимаемый таблицей ссылок на управляющую запись файла.

34h

ДВ. СЛОВО

АДРЕС ТАБЛИЦЫ ССЫЛОК.

В первых двух байтах поля содержится короткий адрес таблицы (в "обратном" порядке). Вторые два байта - адрес сегмента, в котором расположена таблица.

38h

24 БАЙТА

Резервируется для системного пользования

50h

3 БАЙТА

ВОЗВРАТНЫЙ КОД ФУНКЦИИ-ДИСПЕТЧЕРА.

53h

2 БАЙТА

Резервируется для системного пользования.

55h

7 БАЙТ

Расширение первого FCB

5Ch

16 БАЙТ

БЛОК УПРАВЛЕНИЯ ФАЙЛОМ.

Данный блок используется, если первым параметром в командной строке после имени программы является имя файла.

6Ch

16 БАЙТ

БЛОК УПРАВЛЕНИЯ ФАЙЛОМ.

7Сh

ДВ. СЛОВО

Резервируется для системного пользования.

80h

128 БАЙТ

ХВОСТ КОМАНДНОЙ СТРОКИ, DTA.