Реферат: The Real Hello World

.byte 0

)

Пока еще у нас жив BIOS, запомним позицию курсора и сохраним ее в известном месте ( 0000:0x8000 ). Ядро позже заберет все данные и будет их использовать для вывода на экран победного сообщения.

save_cursor:

mov ah,#0x03 ; читаем текущую позицию курсора

xor bh,bh

int 0x10

seg cs

mov [0x8000],dx ;сохраняем в специальном тайнике

Теперь внимание, запрещаем прерывания (нечего отвлекаться во время такой работы) и загружаем таблицу дескрипторов

cli

lgdt GDT_DESCRIPTOR ; загружаем описатель таблицы дескрипторов.

У нас таблица дескрипторов состоит из трех описателей: Нулевой (всегда должен присутствовать), сегмента кода и сегмента данных

.align 4

.word 0

GDT_DESCRIPTOR: .word 3 * 8 - 1 ; размер таблицы

дескрипторов

.long 0x600 + GDT ; местоположение

таблицы дескрипторов

.align 2

GDT:

.long 0, 0 ; Номер 0: пустой

дескриптор

.word 0xFFFF, 0 ; Номер 8:

дескриптор кода

.byte 0, CODE_ARB, 0xC0, 0

.word 0xFFFF, 0 ; Номер 0x10:

дескриптор данных

.byte 0, DATA_ARB, 0xCF, 0

К-во Просмотров: 839
Бесплатно скачать Реферат: The Real Hello World