Системное программное обеспечение. Рощин А.В. - 123 стр.

UptoLike

Составители: 

123
4.5 Использование командной строки
При запуске программы DOS формирует префикс программного
сегмента (PSP), который загружается в память перед программой. Сразу
после загрузки DS:0000 и ES:0000 указывают на начало PSP этой
программы. Информация, содержащаяся в PSP позволяет выделить имена
файлов и всевозможные ключи из командной строки, узнать объем
доступной памяти, определить окружение и т. д.
Структура префикса программного
сегмента приведена ниже. Для
использования командной строки ее следует считать из PSP, учитывая, что
сразу после запуска программы .EXE сегментные регистры DS и ES
настроены на начало PSP. В случае программы .COM на начало PSP
настроены все сегментные регистры (CS, DS, ES, SS).
Ниже приведен фрагмент программы выполняющей анализ
командной строки.
Смещ. Длина Содержимое
+0 2 int 20h Выход в DOS
+2 2
Mem
Top Вершина доступной памяти в параграфах
+4 1 (Резерв)
+5 5 Call смещ. сегмент Вызов диспетчера функций DOS
+0ah 4 смещ. сегмент Адрес завершения (см. int 22h)
+0eh 4 смещ. сегмент Адрес обр. Ctrl-Break (см. int 23h)
+12h 4 смещ. сегмент Обраб. критич. ошибок (см. int 24h)
+16h 16h Резервная область DOS
+2ch 2 Env Seg Сегментный адрес окружения
+2eh 2eh Резервная область DOS
+5ch 10h FCB1 FCB первого параметра команды
+6ch 14h FCB2 FCB второго параметра команды
+80h 1 len Длина области UPA (с адр. 81h) или DTA
+81h 7fh Неформ. обл. параметров Символы ком. строки DOS
                                     123



       4.5 Использование командной строки
     При запуске программы DOS формирует префикс программного
сегмента (PSP), который загружается в память перед программой. Сразу
после загрузки DS:0000 и ES:0000 указывают на начало PSP этой
программы. Информация, содержащаяся в PSP позволяет выделить имена
файлов и всевозможные ключи из командной строки, узнать объем
доступной памяти, определить окружение и т. д.
     Структура префикса программного сегмента приведена ниже. Для
использования командной строки ее следует считать из PSP, учитывая, что
сразу после запуска программы .EXE сегментные регистры DS и ES
настроены на начало PSP. В случае программы .COM на начало PSP
настроены все сегментные регистры (CS, DS, ES, SS).
     Ниже приведен фрагмент программы выполняющей анализ
командной строки.

Смещ.     Длина Содержимое
 +0         2   int 20h                         Выход в DOS
  +2        2    Mem Top        Вершина доступной памяти в параграфах
  +4        1                                      (Резерв)
  +5        5    Call   смещ.   сегмент       Вызов диспетчера функций DOS
 +0ah       4     смещ.    сегмент           Адрес завершения (см. int 22h)
 +0eh       4     смещ.    сегмент          Адрес обр. Ctrl-Break (см. int 23h)
 +12h       4     смещ.    сегмент         Обраб. критич. ошибок (см. int 24h)
 +16h      16h     Резервная область DOS
 +2ch       2    Env Seg                   Сегментный адрес окружения
 +2eh      2eh     Резервная область DOS
 +5ch      10h    FCB1                FCB первого параметра команды
 +6ch      14h    FCB2                FCB второго параметра команды
 +80h       1    len            Длина области UPA (с адр. 81h) или DTA
 +81h      7fh    Неформ. обл. параметров        Символы ком. строки DOS