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










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

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

Выполнение вызова функций в режиме совместимости

Второй способ выполнения обращения к функциям, предоставляемый операционной системой MS-DOS для обеспечения совместимости с другими операционными системами, конкретно предназначен для операционных систем CP/M-80 и CP/M-86. Этот способ в действительности не обеспечивает возможность запуска программ операционной системы CP/M под управлением операционной системы MS-DOS. Он только упрощает и облегчает преобразование программ операционной системы CP/M в программы операционной системы MS-DOS тем, что при этом не всегда требуется переопределение процедуры обращения к функциям. Но, однако, Вам, вероятно, придется менять многие номера функций. Данный способ пригоден только для функций с номерами от 0 до 24h операционной системы MS-DOS. Возможно, Вы встретитесь с трудностями при использовании регистров в некоторых обращениях к функциям, поэтому следует избегать использования этого метода, если только вы не собираетесь тестировать вашу программу до ее полного преобразования. Операционная система MS-DOS требует, чтобы обращение к функциям с использованием этого второго способа выполнялось следующим образом:


1. Сохранение содержимого регистров AX, BX, CX и DХ путем выталкивания их значений в стек.


2. Помещение номера функции в регистр CL. (Могут использоваться только номера функций, начиная с 0 и до 24h).


3. Помещение других данных в регистры, указанные для выполнения заданной функции, если это нужно.


4. Произвести внутрисегментное обращение к адресу 5 внутри текущего сегмента программы. Этот адрес содержит длинное обращение к диспетчеру функций операционной системы MS-DOS.


5. В зависимости от выполняемой функции, переменные данные возвращаются в указанных регистрах для возможности их дальнейшего считывания и использования в вашей программе. Некоторые функции ничего не возвращают. Примечание: Эта процедура всегда стирает содержимое регистра AX. Все остальные регистры ведут себя так же, как и при использовании стандартной процедуры обращения к функциям.


6. Восстановление исходного содержания регистров.


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

Hosted by uCoz