Реферат: Прерывание 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-секторных дорожек); номера секторов д.б. упорядочены.

К-во Просмотров: 448
Бесплатно скачать Реферат: Прерывание BIOS