Cредства чтения секторов BIOS и DOS.
10.2. Cредства чтения секторов BIOS и DOS.
В BIOS работа с дисками поддерживается прерыванием 0x13. Это весьма "богатое" прерывание, имеющее много функций, определяемых содержимым регистра AH. Ниже приведена краткая сводка функций этого прерывания (номера функций 16-ричные):
0 | - сброс дисковой подсистемы; |
1 | - состояние дисковой подсистемы; |
2 | - чтение секторов; |
3 | - запись секторов; |
4 | - контроль секторов; |
5,6,7 | - форматирование дорожки; |
8 | - параметры накопителя; |
9 | - инициализация таблиц BIOS для жесткого диска; |
A | - длинное чтение (жесткий диск); |
B | - длинная запись (жесткий диск); |
C | - поиск цилиндра (жесткий диск); |
D | - альтернативный сброс (жесткий диск); |
E | - чтение буфера секторов (жесткий диск); |
F | - запись буфера секторов (жесткий диск); |
10 | - проверка готовности (жесткий диск); |
11 | - перекалибровка дисковода (жесткий диск); |
12,13,14 | - диагностика контроллера (жесткий диск); |
15 | - тип диска; |
16 | - состояние замены (гибкий диск); |
17 | - установка типа; |
18 | - установка типа носителя; |
19 | - парковка головок; |
1A,1B,1C | - ESDI жесткий диск. |
Для целей нашего пособия наиболее интересны функции 2 и 3 - чтение и запись. Формат обращения к этим функция преры- вания 0x13 (содержимое регистров) следующий:
AH | - номер функции; |
AL | - количество секторов, которое нужно прочитать/записать; CX - номер дорожки и сектора (см.ниже); DH - номер головки; DL - физический номер дисковода (0 - дисковод A, 1 - B, 0x80 - 1-й жесткий диск, 0x81 - 2-й жесткий диск); |
ES:BX | - адрес области оперативной памяти, с которой происходит обмен. |
После выполнения прерывания 0x13 флаг переноса устанавливается в 0, если операция прошла без ошибок или в 1 при наличии ошибок, в последнем случае регистр AH содержит код ошибки.
Номер дорожки и сектора задается в регистре CX в следующем упакованном формате: