Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НЕ_1.4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
287 Кб
Скачать
☆

Читання сектора

На вході:

AH

02h

AL

Кількість секторів, які потрібно прочитати

CH

Номер доріжки

CL

Номер сектора

DH

Номер головки

DL

Адреса пристрою НГМД або НМД (0, 1, ..., 80h, 81h, ...)

ES:BX

Адреса буферу для даних

На виході:

AH

Стан дисководу після завершення останньої операції

CF

1, якщо виникла помилка, 0, якщо помилки немає

Примітка:

PC, XT, AT, PS/2

Ця функція дозволяє прочитати один сабо декілька секторів диску в буфер, що знаходиться оперативній пам'яті.

Для НМД номер доріжки і номер сектора задаються наступним чином: біти 5...0 регістра CX задають номер сектора, а біти 15...6 – номер доріжки.

Перед читанням необхідно підготовити таблицю параметрів НГМД чи НМД.

Запис сектора

На вході:

AH

03h

AL

Кількість секторів, які необхідно прочитати

CH

Номер доріжки

CL

Номер сектора

DH

Номер головки

DL

Адреса пристрою НГМД або НМД (0, 1, ..., 80h, 81h, ...)

ES:BX

Адреса буферу для даних

На виході:

AH

Стан пристрою після завершення операції

CF

1, якщо виникла помилка, 0, якщо помилки немає

Примітка:

PC, XT, AT, PS/2

Функція запису секторів аналогічна до попередньої, за виключенням напряму переміщення даних – дані записуються з буферу в один або декілька секторів диску. Необхідно відзначити, що при роботі з НГМД не для кожної BIOS буде очікування перед виконанням операції запису, поки двигун розкрутиться до робочої швидкості. В результаті програма може отримати признак помилки. Перед тим, як робити вивід про причину помилки, слід скинути контролер НГМД функцією 00H та повторити операцію запису три рази.

Перевірка сектора

На вході:

AH

04h

AL

Кількість секторів, які потрібно перевірити

CH

Номер доріжки

CL

Номер сектора

DH

Номер головки

DL

Адрес пристрою НГМД або НМД (0, 1, ..., 80h, 81h, ...)

На виході:

AH

Стан пристрою після завершення операції

AL

Кількість перевірених секторів

CF

1, якщо виникла помилка,

0, якщо помилка немає

Примітка:

PC, XT, AT, PS/2

За допомогою цієї функції програма може впевнитися, що вказані сектори існують і їх можна прочитати. Діна перевіряються по методу циклічного надлишкового контролю (CRC ). Адреса буфера не потрібна, так як при перевірці читання даних в оперативну пам'ять не виконується.

Перед використанням цієї функції впевніться в тому, що двигун НГМД розкрутився до робочої швидкості (на виконання цієї операції зазвичай достатньо 0,5 - 1 сек), в протилежному випадку виникне помилка.