Neo
|
Дата: Вторник, 08.05.2012, 06:30 | Сообщение # 1
|
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
|
Захотел как-то я написать свой манаджер загрузки ОС с дискеты.
Не долго думая,я написал тестовый пример,суть вот в чём:
при загрузки bios считывает 1 сектор диска(или дискеты,смотря как выбрать) в память по адресу
0000:7c00h,а потом запускает всё это,так же ведь?
У меня на дискете первый сектор вот какой:
Code
org 07C00h
main:
cli
mov ax,cs
mov ds,ax
mov sp,0FFFFh
sti
mov ah,0Ah
mov al,'1'
mov bh,0
mov cx,10
int 10h ;выожу на экран очень смысловое сообщение(10 единичек)
mov ah,2
mov bh,0
mov dh,2
mov dl,0
int 10h ;переношу курсор на другую строку
xor ax,ax
int 16h ;жду нажатие с клавиатуры
mov ax,8600h
mov es,ax ; Cегмент куда загружать буду настоящийй загрузчик
xor bx,bx
mov ah,2
mov al,1 ;читаем всего 1 сектор
xor ch,ch ;номер цилиндра
mov cl,1 ;читаем нулевой 0 сектор (1-1)
mov dl,80h ;С:\
xor dh,dh ;номер головки
int 13h
jmp far 0:8600h ; прыгаю на виндовый загрузчик
times 510-($-main) db 0 ;выравнивание
dw 0AA55h ;любимые байты biosa
По идее должно быть так:
Биос читает этот код с дистеты,потом выполняется прочитанный код(вижу единички,жму кнопку на клаве),а
этот код читает первый "виндовый" сектор и джампает на него.Должна грузиться винда.Но вместо этого,после
сообщения и нажатия кнопки,длинный горизонтальный куроср и всё.
Вопрос: п о ч е м у?
-------------------------------------------------------------------------------------------------------------------------------------------- -----------------
P.S
Нашёл статью на Хакере,там на диске к статье,есть исходники,которые мне бы очень помогли.(ge2000.asm,mbr.asm,boot.asm)Но где бы найти этот диск?Может у кого есть такие сорсы?
|
|
|
|