Хелпикс

Главная

Контакты

Случайная статья





shl eax, 4 mov ebp, eax mov bx, offset gdt_data mov [(descr ptr bx).base_l], ax rol eax, 16 mov [(descr ptr bx).base_m], al



shl eax, 4 mov ebp, eax mov bx, offset gdt_data mov [(descr ptr bx).base_l], ax rol eax, 16 mov [(descr ptr bx).base_m], al

xor eax, eax mov ax, cs shl eax, 4 mov bx, offset gdt_code mov [(descr ptr bx).base_l], ax rol eax, 16 mov [(descr ptr bx).base_m], al

xor eax, eax mov ax, ss shl eax, 4 mov bx, offset gdt_stack mov [(descr ptr bx).base_l], ax rol eax, 16 mov [(descr ptr bx).base_m], al

;Вычислим 32-битовый линейный адрес сегмента TSS 0 и загрузим его
;в дескриптор сегмента TSS 0 в таблице глобальных дескрипторов
mov eax, ebp ; (8) Адрес начала сегмента данных
add ax, offset tss_0 ; (9) Добавим смещение TSS0
mov bx, offset gdt_tss_0 ; (10)
mov [(descr ptr bx).base_l], ax ; (11)
rol eax, 16 ; (12)
mov [(descr ptr bx).base_m], al ; (13)

;Вычислим 32-битовый линейный адрес сегмента TSS 1 и загрузим его
;в дескриптор сегмента TSS 1 в таблице глобальных дескрипторов
mov eax, ebp ; (14) Адрес начала сегмента данных
add ax, offset tss_1 ; (15) Добавим смещение TSS1
mov bx, offset gdt_tss_1 ; (16)
mov [(descr ptr bx).base_l], ax ; (17)
rol eax, 16 ; (18)
mov [(descr ptr bx).base_m], al ; (19)

;Подготовка к загрузке GDTR
mov [dword ptr pdescr+2], ebp
mov [word ptr pdescr], gdt_size-1
lgdt [pword ptr pdescr]

; Заполним поля TSS 1, TSS 0 заполнится автоматически
mov [word ptr tss_1+4Ch], 16 ; (20) CS
mov [word ptr tss_1+20h], offset highmem ; (21) IP
mov [word ptr tss_1+50h], 24 ; (22) SS
mov [word ptr tss_1+38h], 128 ; (23) SP
mov [word ptr tss_1+54h], 8 ; (24) DS
mov [word ptr tss_1+48h], 32 ; (25) ES

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

in al, 70h or al, 80h out 70h, al

;Подготовка к загрузке IDTR
mov [word ptr pdescr], idt_size-1
xor eax, eax
mov ax, offset idt
add eax, ebp
mov [dword ptr pdescr+2], eax
lidt [pword ptr pdescr]

;Открыть линию А20
mov al, 0D1h
out 64h, al
mov al, 0DFh
out 60h, al
mov eax, CR0
or eax, 1
mov CR0, eax

db 0EAh
dw offset continue
dw 16
continue:
mov ax, 8
mov ds, ax



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.