запись ядра в загрузчик 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

Ответы (0 шт):