Курсовая работа: Робота в захищеному режимі мікропроцесора
asm cli end; { маскируемых }
port[$70]:=$80; { и немаскируемых }
end; {not_int}
{---------------Разрешение аппаратных прерываний--------------}
procedure en_int;
begin
asm sti end; { маскируемых }
port[$70]:=$d; { и немаскируемых }
mem[$40:$17]:=0 { Сброс состояния клавиш-переключателей }
end; {en_int}
{------------------Установка режима "Unreal"------------------}
procedure set_unr(base,limit:longint;kseg,byte_6h:byte);
begin
{ Формирование таблицы GDT: }
init_gdt(0,0,0,0,0); { нуль-дескриптор }
init_gdt(1,limit,base,$92,$80); { дескриптор сегмента }
init_gdtr; { Создание данных и загрузка регистра GDTR }
not_int;{ Запрет маскируемых и немаскируемых прерываний }
asm { Переход в защищенный режим: }
db $0f,$20,0c0h { MOV EAX,CR0 }
db 66h,0dh { OR EAX,1 }
dd 1h
db $0f,22h,0c0h { MOV CR0,EAX }
{ Загрузка селектора заданного сегмента (kseg): }
mov ax,8
cmp kseg,0
jnz @3
db 8eh,0c0h { MOV ES,AX }
jmp @k