| Справочник программиста на персональном компьютере фирмы IBM | 44 |
DOS для работы программы; PSP также обеспечивает место для файло-
вых операций ввода/вывода [5.3.5]. При загрузке EXE файла и DS и
ES указывают на PSP. Для COM файлов CS также сначала указывает на
PSP. Отметим, что MS DOS 3.0 имеет функцию, которая возвращает
номер сегмента PSP. Это функция 62H прерывания 21H; ей ничего не
надо подавать на входе, а в BX возвращается номер параграфа.
Одна из причин, по которой интересно положение PSP, состоит в
том, что его первое слово содержит номер прерывания DOS, которое
будет приводить к завершению программы. Когда выполняется послед-
ний оператор RET программы, то значения на вершине стека указы-
вают счетчику команд (регистр IP) на начало PSP, таким образом
код завершения выполняется как следующая инструкция программы.
Дальнейшее обсуждение этого смотрите в пунктах [1.3.4] и [1.3.6].
Для справки приводим значение полей PSP:
Смещение Размер поля Значение
0H DW номер функции DOS завершения программы
2H DW размер памяти в параграфах
4H DW резерв
6H DD длинный вызов функции диспатчера DOS
AH DD адрес завершения (IP,CS)
EH DD адрес выхода по Ctrl-Break (IP,CS)
12H DD адрес выхода по критической ошибке
16H 22 байта резерв
2CH DW номер параграфа строки среды
2EH 46 байтов резерв
5CH 16 байтов область параметров 1 (формат FCB)
6CH 20 байтов область параметров 2 (формат FCB)
Предыдущая страница 44 Следующая страница
1375215991
|