На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 12 / Еще один способ (только для версий операционной системы MS-DOS, начиная с 2.00 и выше) Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Еще один способ (только для версий операционной системы 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. Является ли в настоящее время этот способ обращения к функциям уже оставленной попыткой фирмы "Майкрософт" реализовать мультизадачный режим? Точный ответ на этот вопрос знает только сама фирма "Майкрософт".


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz