Защищенный режим процессоров Intel



Phar Lap DOS-экстендер - часть 2


Сравните это с функциями интерфейса DPMI, вы увидите что между этими интерфейсами есть много общего. Есть специальная функция, предназначенная для отладчиков - "Загрузить программу для отладки".

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

Таблица 14. Таблица LDT Phar Lap DOS-экстендера.

0008h Сегмент кода программы.
0010h Сегмент данных программы.
0018h Сегмент видеопамяти для работы в текстовом режиме.
0020h PSP программы.
0028h Сегмент строк среды DOS (DOS environment).
0030h Сегмент данных для доступа к первому мегабайту памяти, доступен для записи.
0038h Сегмент для работы с сопроцессором Weitek 1167. В отличие от сопроцессора i80287/i80387 для обращения к сопроцессору Weitek 1167 используется определённая область адресов памяти.
0040h Сегмент видеопамяти для работы в графическом режиме.

В документации на Phar Lap DOS-экстендер подробно описаны форматы таблиц LDT и GDT. Программы могут пользоваться определёнными в этих таблицах селекторами для адресации системных областей памяти, таких как память видеоадаптера.

В качестве простейшего примера использования Phar Lap DOS-экстендера приведём следующую программу:

Листинг 20. Использование Phar Lap DOS-экстендера Файл pharlap.asm ----------------------------------------------------------- ; --------------------------------------------------- ; Сегмент данных ; --------------------------------------------------- _data segment para public use32 'data' hello db 'PHAR LAP 386/DOS EXTENDER', 0dh,0ah db 'Вызов DOS в защищенном режиме', 0dh,0ah db 0dh,0ah,'© Frolov A.V., 1992',0dh, 0ah db 0dh,0ah,'Для возврата в DOS нажмите любую клавишу','$' _data ends ; --------------------------------------------------- ; Сегмент стека ; --------------------------------------------------- _stack segment byte stack use32 'stack' db 8192 dup (?) _stack ends ; --------------------------------------------------- ; Сегмент кода ; --------------------------------------------------- assume cs:_text,ds:_data _text segment para public use32 'code' public _start_ _start_ proc near ; Выводим строку lea edx,hello mov ah,09h int 21h mov ah,8h int 21h mov ax,04c00h int 21h _start_ endp _text ends end _start_

Эта программа просто выводит сообщение на экран и завершает свою работу после того, как вы нажмёте любю клавишу.Особенность программы заключается в том, что она получает управление сразу в защищённом режиме. Запуск программы должен выполняться специальным загрузчиком, который входит в состав Phar Lap DOS-экстендера. Этот загрузчик находится в файле run386.exe.

Для трансляции программы и её запуска можно использовать следующий командный файл:

386asm pharlap 386link pharlap run386 pharlap

Обратите внимание на то, что в приведённой выше программе не выполняется загрузка сегментного регистра DS. Так как программа стартует сразу в защищённом режиме, загрузчик run386 загружает сам все сегментные регистры. В частности, он загружает в регистр DS селектор сегмента данных.




Содержание  Назад  Вперед