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

mov ax, #1

lmsw ax ; прощай реальный режим. Мы теперь

находимся в защищенном режиме.

jmpi 0x1000, 8 ; Затяжной прыжок на 32-разрядное ядро.

Вот и вся работа загрузочного сектора - немало, но и немного. Теперь мы попрощаемся с ним и направимся к ядру.

В конце ассемблерного файла полезно добавить следующую инструкцию.

.org 511

end_boot: .byte 0

В результате скомпилированный код будет занимать ровно 512 байт, что очень удобно для подготовки образа загрузочного диска.

3. Первые вздохи ядра (head.S)

Ядро к сожалению опять начнется с ассемблерного кода. Но теперь его будет совсем немного.

Мы собственно зададим правильные значения сегментов для данных (ES, DS, FS, GS). Записав туда значение соответствующего дескриптора данных.

cld

cli

movl $(__KERNEL_DS),%eax

movl %ax,%ds

movl %ax,%es

movl %ax,%fs

movl %ax,%gs

Проверим, нормально ли включилась адресная линия A20 простым тестом записи. Обнулим для чистоты эксперимента регистр флагов.

xorl %eax,%eax

1: incl %eax

movl %eax,0x000000

cmpl %eax,0x100000

je 1b

pushl $0

popfl

Вызовем долгожданную функцию, уже написанную на С.

call SYMBOL_NAME(start_my_kernel)

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