Иллюстрированный самоучитель по Assembler


Основы защищенного режима - часть 13


mov AX,CS ;Сегментный адрес сегмента команд

shl ЕАХ,4 ;В ЕАХ линейный базовый адрес

mov BX,offset gdt_code ;В ВХ адрес дескриптора

mov [BX] .base_l,AX ;Загрузим младшую часть базы

rol ЕАХ,16 ;Обмен старшей и младшей половин ЕАХ

mov [BX].base_m,AL ;Загрузим среднюю часть базы

;Вычислим 32-битовый линейный адрес сегмента стека

хог ЕАХ, ЕАХ ;Все, как и для других

mov AX,SS ;дескрипторов

shl ЕАХ,4

mov BX,offset gdt_stack

mov [BX].base_l,AX

rol EAX,16

mov [BX].base_m,AL

;Подготовим псевдодескриптор pdescr для загрузки регистра GDTR

mov dword ptr pdescr+2,EBP ;База GDT

mov word ptr pdescr, 39 ;Граница GDT

Igdt pdescr ;Загрузим регистр GDTR

cli ;Запрет прерываний

;Переходим в защищенный режим

mov EAX,CR0 ;Получим содержимое CR0

or EAX,1 ;Установим бит защищенного режима

mov CRO,ЕАХ ;Запишем назад в CR0

;---------------------------------------------------------;

;Теперь процессор работает в защищенном режиме ;

;---------------------------------------------------------;

;Загружаем в CS:IP селектор:смещение точки continue

db OEAh ;Код команды far jmp

dw offset continue ;Смещение

dw 16 ;Селектор сегмента команд

continue:

;Делаем адресуемыми данные

mov AX, 8 ;Селектор сегмента данных

mov DS,AX ;Загрузим в DS

;Делаем адресуемым стек

mov AX,24 ;Селектор сегмента стека

mov SS,AX ;Загрузим в SS

;Инициализируем ES и выводим символ

mov AX,32 ;Селектор сегмента видеобуфера

mov ES,AX ;Загрузим в ES

mov BX,2000 ;Начальное смещение на экране

mov AX,09FOFh ;Символ с атрибутом

mov ES : [BX] , АХ;Вывод в видеобуфер
;Вернемся в реальный режим

mov gdt_data.limit,0FFFFh ;Установим

mov gdt_code.limit,0FFFFh ;значение границы

mov gdt_stack.limit,0FFFFh;для реального

mov gdt_screen.limit,0FFFFh ;режима

mov AX,8 ;Загрузим теневой регистр

mov DS,AX ;сегмента данных

mov AX,24 ;To же для

mov SS,AX ;стека

mov AX,32 ;To же

mov ES, AX ;для регистра ES

;Выполним дальний переход, чтобы заново загрузить
;селектор в CS и модифицировать его теневой регистр




Начало  Назад  Вперед



Книжный магазин