§ Через CHS
Для загрузки секторов используется классический подход с указанием цилиндра, головки и сектора (CHS - Cylinder Head Sector). Ссылка на
источник.
1mov ax, $02
2mov al, 48
3mov bx, $8000
4mov cx, $0002
5mov dh, $00
6mov dl, $80
7int 13h
8
9
10
11
12
13+5-4-3-2-1-0-9-8-7-6-5-4-3-2-1-0+
14¦c c c c c c c c C C s s s s s s¦
15+7-6-5-4-3-2-1-0¦9+8+-+-+-+-+-+-+
В регистре CL (биты 0..5) содержится номер сектора от 1 до 63. В регистре CH содержится младшие 8 бит цилиндра, и в старших 2 битах регистра CL - биты 8..9 номера цилиндра, то есть вычисляется так:
Сектор = CL & 63;
Цилиндр = ((CL & 0xC0) << 2) + CH;
Номер цилиндра может быть равным от 0 до 1023, головки от 0 до 255, а сектора от 1 до 63. Чтобы вычислить положение сектора на диске в режиме LBA (Large Block Array), считается так:
LBA = (Sector-1) + Head*63 + Cylinder*63*256
§ Через LBA
В современных BIOS есть специальные функции для работы с плоской моделью дисков. Ссылка на
функцию.
1mov ah, 42h
2mov si, DAP
3mov dl, $80
4int 13h
Таблица параметров
1DAP:
2 db 10h
3 db 00h
4 dw 0001h
5 dw 0000h
6 dw 0800h
7 dq 0