Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Префикс программного сегмента PSP

Пример функций СУФ в MS DOS | Командный язык | Интерпретатор командной строки | Графический пользовательский интерфейс | Начальная загрузка ОС | Контекст процесса | Параллельные процессы | Списки готовых и ждущих процессов | Основные события и состояния процесса пользователя в реальном времени | Основные операции управления процессами |


Читайте также:
  1. ВОЗМОЖНОСТИ СЕГМЕНТАЦИИ РЫНКА
  2. Гарантии прав использования программного обеспечения
  3. Д Внутрішньосегментарні бронхи.
  4. Классификация адаптационных средств программного обеспечения БИС.
  5. Критерии выбора программного обеспечения БИС.
  6. Необходимость, цели, принципы, процесс проведения сегментации рынка
  7. Необходимость, цели, принципы, процесс проведения сегментации рынка

В однопрограммной MS DOS нет блока управления процессом. Вместо PCB используется префикс программного сегмента PSP. Перед загрузкой программы MS DOS в самом ее начале располагает PSP. PSP - это таблица из 256 байтов (100h), имеющая ряд важных полей, например, таких:

- команда int 20h для выхода в DOS - смещение 0, длина 2 байта;

- вершина доступной памяти в параграфах (начало - это адрес PSP) - смещение 2, длина 2;

- CALL FAR к диспетчеру функций DOS - смещение 05, длина 5;

- адрес п/п обработки ^Break (его можно переопределять) в формате CS:IP. Стандартный int 23h. - смещение 0eh, длина 4;

- адрес п/п обработки критических ошибок. Его можно переопределять. Стандартный int 24h. Формат CS:IP. - смещение 012h, длина 4 байта;

- длина области пользовательских параметров, переданных в командной строке (UPA) (не более 127). При отсутствии командной строки длина равна 1 для кода CR - смещение 80h, длина 1;

- буфер с командной строкой, кроме имени программы, т.е. сами параметры командной строки (UPA). Буфер называется DTA.- смещение 81h, длина 7fh.

MS DOS для размещения программы выбирает наименьший доступный адрес, размещая в нем PSP. Другая управляющая программа, например, WINDOWS 3.11, может выбрать любую часть памяти. При входе в программу DS:0000 и ES:0000 указывают на PSP.

В.COM файлах один общий сегмент, поэтому он размещается вслед за PSP по адресу PSP:100h. В этом случае CS, DS, ES, SS имеют одинаковые значения и ссылаются на PSP. Доступ к полям PSP проводится с указанием только смещения относительно DS. Например, чтобы получить длину UPA, можно записать

MOV CH,[80h],

так как MOV по умолчанию использует DS.

В.EXE файлах только DS:0 и ES:0 на входе имеют адрес PSP. Перед кодовым сегментом размещают сегмент данных, поэтому кодовый сегмент будет не первым и не по адресу PSP:100h. Для доступа к PSP, если содержимое DS не изменено, можно использовать смещение относительно DS. DS можно запомнить и восстанавливать, когда необходим доступ к PSP.

Есть функция DOS 1ah, вызываемая через int 21h, которая возвращает адрес DTA в регистровой паре DS:DX (DTA обычно совпадает с UPA).

При работе с DTA необходимо помнить, что эту же область использует ряд функций DOS, помещая свои данные. Поэтому лучше обработать командную строку до обращения к функциям DOS, особенно таким, как выход - 4ch, поиск файла на устройстве - 4еh.

Наиболее часто используется PSP для доступа к параметрам из командной строки и ее разбора.


Дата добавления: 2015-10-02; просмотров: 171 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ПРОЦЕССЫ В UNIX| Создание дочерних процессов

mybiblioteka.su - 2015-2024 год. (0.005 сек.)