запись ядра в загрузчик OS
Всем привет, на yasm написан загрузчик, ядро на си. Для того чтобы загрузчик передал управление на ядро необходимо считать ядро в память. для этого в загрузчик передаются параметры ядра:
DL — номер диска (носителя). Например, 0 — дисковод A:;
DH — номер головки;
старшие два бита CL и CH — номер цилиндра (дорожки);
CL — младшие шесть бит — номер сектора;
AL — количество секторов
ES:BX — адрес буфера, в который считываются данные. В случае ошибки функция устанавливает флаг CF. Поскольку функция будет использоваться для чтения с дискеты, поэтому можно считать, что номер цилиндра — CH, а номер сектора — CL.
При работе с небольшим ядром проблем нет. Но с увеличением ядра такая запись перестает работать. По видимому необходимо записывать в несколько заходов. Мне не понятно как это организовать. может есть какие-то формулы, сколько секторов за один раз можно записать. Если есть кто шарит за это подскажите плиз.
Рабочий пример записи небольшого ядра:
mov ax,0x1100 ;адрес буфера
mov es,ax
mov bx,0 ;адрес буфера
mov ah,0x02 ;функция
mov dl,1 ;то с чего считываем
mov dh,0 ;номер головки
mov cl,2 ;номер сектора
mov ch,0 ;номер дорожки
mov al,18 ;количество секторов
;mov ah, 0x02
int 0x13