|
|
|
|
Еще один способ (только для версий операционной системы MS-DOS, начиная с 2.00 и выше)
В версии 2.00 операционной системы MS-DOS был представлен
третий способ обращения к функциям. Этот метод также может использоваться с более старшими версиями, но он будет неправильно
работать со всеми более ранними версиями. Третий способ обращения
к функциям выполняется следующим образом:
1. Сохранение содержимого регистров AX, BX, CX и DХ путем
выталкивания их значений в стек.
2. Помещение номера функции в регистр AH.
3. Помещение других данных в регистры, указанные для выполнения заданной функции.
4. Произвести длинное обращение к адресу со смещением
"шестнадцатиричное 50" в префиксе программного сегмента.
5. В зависимости от выполняемой функции, переменные данные
возвращаются в указанных регистрах для возможности их
дальнейшего считывания и использования в вашей программе.
Некоторые функции ничего не возвращают.
6. Восстановление исходного содержания регистров путем обработки выборки из стека.
С появлением операционной системы MS-DOS версии 3.10 обе
фирмы - и "Майкрософт" и "ИБМ" рекомендуют не пользоваться этим
способом. Зачем же он тогда был введен? Одно из возможных его
применений может объяснить это (по адресу шестнадцатиричное смещение 50) в PSP (в префиксе программного сегмента) обычно содержится команда прерывания "int 21h". Используя метод, описанный
выше, программист направлял все обращения к функциям операционной
системы MS-DOS (исключая другие прерывания) только через один адрес. Изменив команду, находящуюся по адресу "шестнадцатиричное
смещение 50", вы можете перенаправить все обращения к функциям
операционной системы MS-DOS. Является ли в настоящее время этот
способ обращения к функциям уже оставленной попыткой фирмы "Майкрософт" реализовать мультизадачный режим? Точный ответ на этот
вопрос знает только сама фирма "Майкрософт".
|
|