Реферат: Прерывание BIOS
DH = номер головки чтения/записи
CH = номер дорожки (цилиндра)(0-n) ◄╗
CL = номер сектора (1-n) ◄══════╩═ См. замечание ниже.
AL = число секторов (в сумме не больше чем один цилиндр)
ES:BX => адрес буфера вызывающей программы
0:0078 => Таблица параметров дискеты (для гибких дисков)
0:0104 => Таблица параметров твердого диска (для твердых дисков)
Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.
ES:BX буфер содержит данные, прочитанные с диска
Замечание: на сектор и цилиндр отводится соответственно 6 и 10 бит:
1 1 1 1 1 1
╓5┬4┬3┬2┬1┬0┬9┬8╥7┬6┬5┬4┬3┬2┬1┬0╗
CX: ║c c c c c c c c C c S s s s s s║
╚-┴-┴-┴-┴-┴-┴-┴-╨-┴-┴-┴-┴-┴-┴-┴-╝
╚═╩═══► исп. как старшие биты номера цилиндра
___ ____________________________________________________________________________
03H Писать секторы
Вход: (аналогично подфункции 02H)
ES:BX => данные, записываемые на диск.
Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.
___ ____________________________________________________________________________
04H Проверить секторы. Проверяет CRC для указанных секторов на ошибки.
Вход: (аналогично подфункция 02H. ES:BX лучше также предоставить)
Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.
___ ____________________________________________________________________________
05H Форматировать дорожку. Данные на дорожке, если есть, разрушаются.
Вход: DL,DH,CH = диск, головка, дорожка (см. подф. 02H)
ES:BX => дескрипторы секторов (требуется 512-байтовый буфер)
дискета: 1 4-байтовый 'CHNS' (Цилиндр, Головка, N сектора, Размер) для каждого сектора на дорожке (т.е. 36 байт для 9-секторных дорожек); номера секторов д.б. упорядочены.