Oc-windows.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Таблица прерываний bios

Аппаратные прерывания IRQ

Думаю, многие любознательные пользователи, наверняка не раз встречали такое сокращение, как IRQ. Его можно встретить, например, если вы любите заглядывать в программу «Менеджер устройств» в Windows. Если вы выберете любое устройство, к примеру, клавиатуру, выберете при помощи правой кнопки мыши пункт меню «Свойства», и в появившемся окне сделаете активной закладку «Ресурсы», то в списке ресурсов вы увидите надпись IRQ 01.

Для чего нужны IRQ

Что же такое IRQ и для чего оно нужно?

Аббревиатура IRQ расшифровывается как Interrupt ReQuest (запрос на прерывание). Для того, чтобы понять, для чего оно нужно, следует вспомнить подробности организации работы персонального компьютера.

Кровеносной системой компьютера, по которой обмениваются информацией процессор и прочие устройства, является системная шина. Но как вообще процессор способен отличить запросы на обработку информации, поступающие по шине от различных устройств?

Для этого и существует система аппаратных прерываний (IRQ). Каждое прерывание имеет определенный номер (нумерация начинается с 0) и закреплено за определенным устройством. Так, за клавиатурой закреплено прерывание под номером 1, отсюда и обозначение IRQ 01.

При поступлении запроса от устройства компьютер прерывает (отсюда и появился сам термин «прерывание») обработку текущей информации и начинает обработку вновь поступившего. Если прерываний несколько, то они обрабатывается в порядке приоритетов, закрепленных за каждым из них. Как правило, чем меньше номер прерывания, тем больший приоритет для процессора имеет устройство, закрепленное за этим прерыванием, но это правило соблюдается далеко не всегда.

Обслуживает обработку IRQ специальный чип, который носит название контроллера прерываний. Как правило, эта микросхема является частью центрального процессора, а иногда выделяется в отдельный чип на материнской плате. Для обработки каждого прерывания в BIOS существует специальная микропрограмма, называемая обработчиком прерывания. Адреса всех обработчиков хранятся в так называемой таблице векторов прерываний.

Раньше, в первых компьютерах семейства XT была распространена 8-разрядная шина ISA, поэтому всего устройствам было доступно 8 прерываний. С появлением 16-разрядной шины ISA их количество увеличилось до 16.

Настройка Interrupt ReQuest

Надо сказать, что прерывания, закрепленные за некоторыми устройствами, не является фиксированными и их можно изменить программно. Например, IRQ стандартно использующееся последовательным портом Com 2, может использовать и устанавливаемый в слот расширения модем. В современных компьютерах и операционных системах, поддерживающих стандарт PnP и работающих под управлением ОС Windows, значения IRQ для устройств, подключаемых в слоты шины, подбираются автоматически.

Но не все было так просто в прежние времена, когда пользователь должен был вручную устанавливать значение IRQ во многих программах, работавших под операционной системой DOS. Например, при установке в систему звуковой карты, пользователю требовалось выбрать свободное прерывание из очень небольшого числа доступных (как правило, это было IRQ 5) и указать это значение в запускаемой программе, например, в какой-нибудь игре.

Во многих BIOS имеется возможность поменять стандартные значения IRQ в программе Setup. Обычно эта опция располагается в разделах IRQ Resources или PCI/PNP Configuration.

Установка для устройства значения IRQ, равного значению IRQ, уже занятого каким-либо устройством в большинстве случаев приводит к неработоспособности одного из этих устройств или сразу обоих, а иногда чревато и зависанием компьютера.

В более современной шине PCI система управления прерываниями была кардинально изменена, а возможности управления прерываниями были расширены. Благодаря технологии IRQ Sharing, а также технологии ACPI стало возможным размещение нескольких устройств на одном канале прерывания, а у внешних устройств, подключаемых в слоты PCI, появилась возможность автоматического распределения ресурсов между собой.

Кроме того, в современных компьютерах обычно используется расширенный программируемый контроллер прерываний (APIC, Advanced Programmable Interrupt Controller), поддерживающий 24 канала Interrupt ReQuest. Расширенный контроллер прерываний выполнен в виде двух микросхем, одна из которых расположена в самом процессоре, а другая на материнской плате. Этот контроллер прерываний впервые появился в системах на основе процессоров Pentium. Однако при этом была оставлена поддержка старой системы прерываний в целях совместимости. Очередным шагом в развитии принципов обработки прерываний является технология Message Signaled Interrupts, поддержка которой появилась в линейке ОС Windows, начиная с Windows Vista.

Не следует путать аппаратные прерывания IRQ c программными прерываниями BIOS, о которых речь пойдет в отдельной статье. Программные прерывания BIOS, как правило, используются для организации работы программного обеспечения с устройствами ввода-вывода и обозначаются при помощи сокращения INT. Многие из них аналогичны по своим функциям аппаратным IRQ, но имеют при этом другие номера.

Список номеров Interrupt ReQuest в стандартной схеме для 16-битной шины ISA:

  1. Системный таймер
  2. Клавиатура
  3. Дополнительный контроллер прерываний (для совместимости с 8-битной шиной)
  4. Порты Com 1 и 3
  5. Порты Com 2 и 4
  6. Свободно (в 8-битной шине — контроллер жесткого диска)
  7. Контроллер гибких дисков (FDD)
  8. Параллельный порт LPT
  9. Часы реального времени CMOS
  10. Совмещено с IRQ 2
  11. Свободно
  12. Свободно
  13. Порт мыши PS/2
  14. Сопроцессор (в настоящее время практически не используется)
  15. Первый контроллер IDE
  16. Второй контроллер IDE

Список дополнительных номеров IRQ, которые использует расширенный контроллер прерываний APIC:

  1. Контроллер USB
  2. Интегрированная звуковая подсистема (AC’97 или HDA)
  3. Контроллер USB
  4. Контроллер USB
  5. Встроенная сетевая карта
  6. Свободно
  7. Свободно
  8. Контроллер USB 2.0

Соответствие номеров IRQ и прерываний BIOS:

Заключение

Итак, в этой статье вы смогли узнать, что означает сокращение IRQ, и что представляют собой аппаратные прерывания. Они являются встроенным механизмом распределения ресурсов компьютера и предназначены для организации доступа устройств к центральному процессору. Правильное распределение и настройка IRQ позволяет избежать конфликтов между устройствами и обеспечить стабильную работу системы.

Базовая система ввода-вывода BIOS. Прерывания BIOS. Области данных и таблицы BIOS

Первые 20 прерываний с номерами от 00Н до 1Fh закреплены за прерываниями, генерируемыми аппаратными средствами либо предназначенными для управления аппаратурой персонального компьютера. ISR этих прерываний вместе с не­которыми данными образуют так называемую базовую систему ввода-вывода или BIOS (Base Input-Output System). Все ISR и данные BIOSa записаны в ПЗУ. ISR, входящие в BIOS, представляют собой самый нижний уровень иерархической структуры программного обеспечения (ПО) управления аппаратными средствами компьютера. Они взаимодействуют с аппаратурой на уровне физических сигналов, портов, заданных адресов и в этой связи являются немобильной частью ПО. При появлении новых аппаратных средств приходится перерабатывать BIOS. Поэтому принято различать версии BIOS по дате разработки. Кроме того, для облегчения дополнений BIOSa новые периферийные устройства снабжаются своей секцией ПЗУ, а основной блок BIOS, при загрузке системы проверяет наличие дополнительных секций и «переключает» на них соответствующие прерывания.

Важной особенностью BIOSa является стандартный интерфейс с программой практически для всех персональных компьютеров на базе микропроцессоров семейства Intel. Другими словами, BIOS выполняет роль «экрана» между программами (в частности, программами MS-DOS) и большим разнообразием конкретных аппаратных средств. Например, для вывода символа на экран дисплея независимо от типа дисплея и используемого адаптера необходимо выполнить инструкцию INT 10h с теми же самыми значениями во внутренних регистрах. Все детали интерфейса программы с ВЮ5ом описываются в техническом справочнике BIOS.

Читать еще:  Bios не видит установочную флешку

При выполнении ISR BIOS для хранения данных используется зарезервированная область памяти, называемая областью данных BIOSa. Она начинается с адреса 40:00h и занимает 256 байт до адреса 40:FFh. Здесь располагается ряд таблиц, копируемых из ПЗУ при начальной загрузке системы и уточняемых по результатам тестирования узлов компьютера. При выполнении функций BIOS многие параметры изменяются. Например, корректируется адрес позиции курсора на экране, номер установленного режима адаптера дисплея и т.п. Другими словами, таблицы в области данных BIOSa отражают текущие параметры и состояние аппаратных средств компьютера.

5.7. Функции библиотеки С++ для доступа к обработчикам прерывания

Библиотечные функции С++, как правило, в конечном итоге обращаются к ISR BIOS или MS-DOS. В тех случаях, когда необходимо непосредственное обращение к BIOS или MS-DOS, используются специальные функции, описываемые далее.

int int86(int intno, union REGS *inregs, union REGS *outregs)

Функция загружает внутренние регистры микропроцессора значениями, записанными в объединении по шаблону union REGS, на начало которого указывает inregs, и выполняет прерывание с номером intno. Значения внутренних регистров на выходе из прерывания записываются в объединении по шаблону union REGS, на начало которого указывает outregs. Описание объединений выполняет точка вызова функции. Шаблон union REGS описан в заголовочном файле и представляет собой объединение двух структур:

unsigned int ax, bx, ex, dx, si, di, cflag, flags;

unsigned char al, ah, bl, bh, cl, ch, dl, dh;

struct WORDREGS x;

struct BYTEREGS h;

Структура WORDREGS используется для доступа к регистрам как двух­байтовым единицам. Структура BYTEREGS позволяет осуществлять доступ к отдельным байтам РОН. Поле структуры flags позволяет перед вызовом задать, а после вызова прочесть значение регистра флагов. Так как многие функции MS-DOS используют флаг переноса для сигнализации об ошибках в програм­ме-обработчике прерывания, в структуре WORDREGS специально выделено поле cflag для значения флага переноса.

Все функции int. () возвращают значение регистра АХ на выходе из ISR. Недостатком функции int86() является возможность доступа лишь к ограниченному числу регистров. При выполнении некоторых функций MS-DOS значения задаются и в сегментных регистрах. В таких (правда, достаточно редких) случаях следует использовать более общую функцию int86x():

int int86x(int intno, union REGS *inregs, union REGS *outregs, struct SREGS *segregs)

В отличие от int86() перед выполнением прерывания intno дополнительно устанавливаются сегментные регистры из структурной переменной по шаблону SREGS. В функцию передается указатель на эту структурную переменную. По возвращении из ISR в структурную переменную по шаблону SREGS дополни­тельно копируются значения всех сегментных регистров. Если необходимо выполнить обращение к функции MS-DOS (т. е. прерывание 21h с заданным значением АН), можно использовать функцию intdos(), всегда обращающуюся к прерыванию 21h.

int intdos(union REGS *inregs, union REGS *outregs)

В отличие от ранее рассмотренных функций данной функции не передается номер генерируемого прерывания, так как всегда генерируется прерывание 21h.

5.8. Предварительная подготовка к работе

1. Ознакомиться с аппаратными средствами системы прерывания.

2. Ознакомиться с программными средствами системы прерывания.

Порядок выполнения работы

По заданию преподавателя разработать алгоритм и реализовать программу подключения собственной подпрограммы обработки прерывания и использовать её в цепочке со стандартной подпрограммой обработки прерывания от одного из следующих устройств компьютера:

1. системный таймер;

3. контроллер накопителя на гибких магнитных дисках;

4. таймер реального времени;

5.контроллер накопителя на жёстком магнитном диске.

Содержание отчета

Отчет по лабораторной работе должен содержать:

— задание на лабораторную работу;

— блок-схему алгоритма с пояснениями;

— примеры запуска программы;

— структурная схема аппаратных средств, используемых при выполнении программы с необходимой степенью детализации блоков.

5.11. Контрольные вопросы

1. Что такое таблица векторов прерывания?

2. Что хранится в одной строчке таблицы векторов прерывания?

3. Какая информация сохраняется в стеке автоматически?

4. Какой из регистров процессора указывает на вершину стека?

5. Каким образом определяется точка входа в таблицу векторов прерывания?

6. Какую информацию следует сохранять в стеке в начале выполнения подпрограммы обработки прерывания?

7. Какие действия должна выполнить подпрограмма обработки прерывания перед своим завершением?

8. С какой частотой поступает запрос по линии прерывания IRQ0?

9. Сколько раз может вызываться прерывание от клавиатуры при однократном нажатии и отпускании произвольной клавиши?

10. Каким образом определяется приоритет при одновременном поступлении нескольких запросов на прерывание?

11. Чем определяется время реакции процессора на запрос прерывания?

12. Какие действия автоматически выполняются процессором при выходе из подпрограммы обработки прерывания?

Список литературы

  1. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем. Учебник для вузов. СПб. Питер, 2006.
  2. Организация ЭВМ. 5-е изд./ К.Хамахер, З.Вранешич, С.Заки. – СПб. Питер; Киев: Издательская группа BHV , 2003. – 848 с.: ил.- (Серия «Классика computer science»).
  3. Скляров В.А. Применение ПЭВМ. Кн.1. Организация и управление ресурсами ПЭВМ. М. Высшая школа, 1992.
  4. Ларионов А.М., Горнец Н.Н. Периферийные устройства в вычислительных системах. М. Высшая школа,1991.
  5. Григорьев В.Л. Видеосистемы ПК фирмы IBM. М. Радио и связь,1993.
  6. Анисимов А.В., Валов А.А., Герасимов И.В., Петров Г.А., Родионов С.В., Филиппов Е.В., Чугунов Л.А. Основы организации вычислительных комплексов для решения задач автоматизации и управления: Учеб. Пособие / ГЭТУ. — СПб.,1995.

Содержание

Лабораторная работа №1. ИССЛЕДОВАНИЕ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ РАЗЛИЧНЫХ ФОРМАТОВ ДАННЫХ. 2

1.1. Общие положения. 2

1.2. Предварительная подготовка к работе. 13

1.3. Порядок выполнения работы. 13

1.4. Содержание отчета. 14

Лабораторная работа №2. ИССЛЕДОВАНИЕ ВИДЕОСИСТЕМЫ (ТЕКСТОВЫЙ РЕЖИМ). 2

2.1. Общие положения. 2

2.2. Видеорежимы и их краткая характеристика. 3

2.3. Функции консольного ввода-вывода. 6

2.4. Управление курсором. 7

2.5. Работа с текстовой информацией. 8

2.6. Скроллинг. Очистка окна и всего экрана. 9

2.7. Вывод информации в окно экрана. 10

2.8. Предварительная подготовка к работе. 13

2.9. Порядок выполнения работы. 13

2.10. Содержание отчета. 14

2.11. Контрольные вопросы. 14

Лабораторная работа № 3. ИССЛЕДОВАНИЕ ВИДЕОСИСТЕМЫ (ГРАФИЧЕСКИЙ РЕЖИМ). 15

3.1. Общие положения. 15

3.2. Инициализация и закрытие системы графики. 16

3.3. Обработка ошибок системы графики. 21

3.4. Определение и установка графического режима. 22

3.5. Управление цветами и палитрами. 24

3.6. Задание окна экрана. Определение и установка графических координат 24

3.7. Вывод текста в графическом режиме видеоадаптера. 26

3.8. Вывод графической информации. 30

3.8.1. Параметры и атрибуты графического вывода. 30

3.8.2. Чтение-запись отдельных пикселов. 36

3.8.3. Вывод отрезков прямых линий. 37

3.8.4. Вывод основных графических примитивов. 37

3.9. Предварительная подготовка к работе. 42

3.10. Порядок выполнения работы. 43

3.11. Содержание отчета. 43

3.12. Контрольные вопросы. 43

Лабораторная работа № 4. КЛАВИАТУРА IBM PC. ИСПОЛЬЗОВАНИЕ ПРЕРЫВАНИЙ. 45

Читать еще:  Acer swift 3 bios

4.1. Общие положения. 45

4.2. Аппаратные и программные средства ввода информации с клавиатуры 45

4.2.1. Аппаратные средства персонального компьютера для ввода информации с клавиатуры. 45

4.2.2. Анализ и преобразование скэн-кода. 46

4.2.3. Буфер клавиатуры. 48

4.3. Ввод информации с клавиатуры средствами MS-DOS. 50

4.3.1. Функции прерывания 21h MS-DOS для ввода информации с клавиатуры 50

4.3.2. Функции библиотеки С++. 51

4.4. Ввод информации с клавиатуры средствами BIOS. 52

4.5. Предварительная подготовка к работе. 42

4.6. Порядок выполнения работы. 53

4.7. Содержание отчета. 54

4.8. Контрольные вопросы. 54

Лабораторная работа № 5. ИСПОЛЬЗОВАНИЕ АППАРАТНЫХ ПРЕРЫВАНИЙ 55

5.1. Общие положения. 45

5.2. Аппаратные прерывания. 56

5.3. Немаскируемые прерывания. 59

5.4. Программные прерывания. 59

5.5. Исключительные ситуации. 60

5.6. Базовая система ввода-вывода BIOS. Прерывания BIOS. Области данных и таблицы BIOS. 60

5.7. Функции библиотеки С++ для доступа к обработчикам прерывания. 61

5.8. Предварительная подготовка к работе. 42

5.9. Порядок выполнения работы. 53

5.10. Содержание отчета. 54

5.11. Контрольные вопросы. 54

Список литературы. 54

Редактор Г. Г. Петров

Подписано в печать . Формат 60×84 1/16.

Бумага офсетная. Печать офсетная. Печ. л. .

Гарнитура « ». Тираж экз. Заказ

Издательство СПбГЭТУ «ЛЭТИ»

197376, С.-Петербург, ул. Проф. Попова, 5

Последнее изменение этой страницы: 2016-06-06; Нарушение авторского права страницы

Сервисы и другие векторы прерываний BIOS

При инициализации таблицы прерываний BIOS отвечает за корректное запол­нение части векторов, имеющих отношение к аппаратным средствам компьютера и сервисам BIOS. На некоторые из них могут быть просто установлены заглуш­ки: вектор ссылается на код обработчика, содержащего единственную инструк­цию возврата из прерывания — IRET. BIOS инициализирует векторы прерыва­ний различных назначений:

♦ внутренних прерываний процессора (исключений), которые могут возник­нуть в реальном режиме работы (об исключениях защищенного режима в основном заботится соответствующая операционная система);

♦ аппаратных прерываний, маскируемых и немаскируемых;

♦ вызовов функций ROM BIOS (16-битных сервисов);

♦ указателей на системные таблицы.

♦ Int OOh — деление на 0;

♦ Int Olh — пошаговый режим;

♦ Int 03h — точка останова;

♦ Int 04h — переполнение;

♦ Int 06h — недопустимая команда 286+;

♦ Int 07h — вызов отсутствующего математического сопроцессора (Numeric Pro­cessor Unit, NPU).

♦ Int 02h — немаскируемое прерывание;

♦ Int 08h — таймер 8253/8254;

♦ Int 09h — клавиатура;

♦ Int QEh — IRQ6 (контроллер гибких дисков);

♦ Int 70h — CMOS-таймер;

♦ Int 71h — IRQ9 (перенаправлено на Int OAh);

♦ Int 74h — IRQ12 (контроллер мыши PS/2);

♦ Int 75h — IRQ13 (исключение сопроцессора);

♦ Int 76h — IRQ14 (контроллер жестких дисков);

Функции ROM BIOS (16-битные сервисы):

♦ Int 05h (F000:FF54h) — печать экрана;

♦ Int 10h — видеосервис (см. 10.6);

♦ Int llh — чтение списка оборудования (слово из BDA 0040:0010h), возвра­
щает в АХ:

• биты 15:14 — число обнаруженных LPT-портов (00 — 0, . 11 — 3);

• бит 12 — обнаружен игровой адаптер;

• биты 11:9 — число обнаруженных СОМ-портов (000 — 0. 111 — 7);

• бит 8 — наличие контроллера DMA;

• биты 7:6 — число обнаруженных НГМД (00 — 1. 11 — 4);

• биты 5:4 — активный видеорежим (00 — резерв, 10 — 80-колоночный
цветной, 01 — 40-колоночный цветной, 11 — монохромный);

• биты 3:2 — размер ОЗУ на системной плате (теперь обычно 00);

• бит 1 — присутствие математического сопроцессора;

• бит 0 — присутствие дисководов;

♦ Int 12h — размер непрерывной памяти;

♦ Int 13h — дисковый сервис (блочный ввод-вывод, см. 9.11);

♦ Int 14h — обслуживание СОМ-портов (см. 16.1);

♦ Int 15h — АТ-функции (системный сервис, функции определяются значени­
ем АН/АХ):

• 00-03h — управление и обмен данными с кассетным магнитофоном (были
когда-то и такие «стримеры»!) на старых ПК;

• 4fh — перехват событий клавиатуры (см. 11.1);

• 53xxh — сервисы расширенного управления энергопотреблением (АРМ);

• 8300h — запуск таймера, устанавливающего флаг в заданной ячейке
(см. 4.6);

• 830 lh — сброс того же таймера;

• 84h — джойстик (см. 11.6);

• 86h — программируемая задержка (см. 4.6);

• 87h — перемещение блока расширенной памяти;

• 88h — получение размера расширенной памяти;

• 89h — переключение в режим V86;

• COh — получение системной конфигурации, при успешном выполне­нии (CF = 0, АН = 0) ES:BX указывает на таблицу данных конфигурации(табл. 5.3);

• 80-82h, 85h, 90h, 91h — функции многозадачных ОС (BIOS устанавливает заглушки);

♦ Int 16h — клавиатурный ввод-вывод (см. 11.1);

♦ Int 17h — обслуживание LPT-портов (см. 15.4);

♦ Int 18h — процедура восстановления при неудаче начальной загрузки (преж­
де — ROM-Basic);

♦ Int 19h — начальная загрузка;

♦ Int lAh — системное время, дата, будильник (см. 4.6) и 16-битные вызовы
сервисов PCI (см. 14.7);

♦ Int lBh — обработчик нажатия клавиш Ctrl+Break;

♦ Int ICh — процедура User Timer Interrupt, вызываемая обработчиком Int 08h
каждые 55 мс; BIOS устанавливает простую заглушку (IRET), но программы
могут перехватывать это прерывание; на время отработки процедуры все ап­
паратные прерывания запрещены
(кроме NMI);

♦ Int 33h — поддержка мыши;

♦ Int 4Ah — обработчик будильника пользователя, установленного функцией
Int lAh (6) BIOS (см. 4.6); прерывание вызывается асинхронно, так что при
возврате из процедуры все регистры и флаги должны быть в том же состоя­
нии, что и при входе; BIOS ставит заглушку (IRET);

♦ Int 67h — EMS-функции.

Указатели на таблицы:

♦ Int lDh — видеопараметры;

♦ Int lEh — параметры дискет;

♦ Int lFh — знакогенератор CGA;

♦ Int 41h — параметры HDD 0;

♦ Int 46h — параметры HDD 1;

♦ Int 43h — знакогенератор EGA.

Как видно из приведенных списков, большинство векторов BIOS накладывается на область векторов ОО-lFh, зарезервированную фирмой Intel под внутренние прерывания и исключения процессоров. Во времена 8086 из них использова­лось совсем малое количество, зарезервированной была объявлена вся указан­ная область. Тем не менее творцы IBM PC «влезли» в эту область, что ослож­нило жизнь системных программистов, работающих с более щедрыми на ис­ключения современными процессорами.

Таблица 5.3.Параметры системы

Смещение Длина, байт Поле_________________________________________________

Длина таблицы, в байтах

Модель: FF — PC, FE или FB — XT, FD — PCjr, FC — AT, FF -неизвестная

Подмодель: PC, XT, PCjr, AT = 00; AT = 01, XT-286 = 02

— бит 1=0- PC-type I/O channel;

— бит 2 = 1- Extended BIOS area allocated;

— бит 3 — поддержка функций ожидания Int 15h(83xx, 86h);

— бит 4 — вызов Int 15h (4Fh) обработчиком Int 09h;

Читать еще:  Hp omen как зайти в bios

— бит 5 — наличие RTC;

— бит 6 — наличие второго контроллера 8259А;

— бит 7 — использование жестким диском канала DMA#3

6_______ 4_____________ Резерв__________________________________________________

Прерывание BIOS

INT 13H: Дисковый ввод-вывод

Этот сервис предоставляет прямой доступ к адаптерам дискеты и твердого диска.

Рекомендуется там, где это возможно, использовать INT 25H и INT 26H (INT 25H/26H – прямая дисковая операция чтения/записи:

INT 25H читает секторы

INT 26H записывает секторы), чтобы предоставить драйверам устройств DOS выполнять всю низкоуровневую обработку. Разумеется, для таких операций, как форматирование диска или установка защиты от копирования, прерывание INT 13H может оказаться единственной альтернативой.

(Подфункции > 8 — только для твердых дисков)

00H сброс контроллера 0aH длинное чтение

01H дать статус 0bH длинная запись

02H читать секторы 0cH искать цилиндр

03H писать секторы 0dH альтернативный сброс

05H форматировать дорожку

08H дать параметры диска

09H инициализировать параметры диска

10H проверить готовность

15H дать тип диска

16H изменить статус

17H установить тип диска

00H Сброс устройства. Вызывает рекалибрацию контроллера.

Если DL равен 80H или 81H, выполнен сброс контроллера твердого диска.

01H Дать статус ошибки последней операции.

Вход: DL = диск. DL 7FH = твердый диск

Выход: AL содержит код ошибки диска (то же, что значение по адресу 0:0441)

02H Читать секторы

Вход: DL = номер диска (0=диск A. ;80H=твердый диск 0;81H=твердый диск 1)

DH = номер головки чтения/записи

CH = номер дорожки (цилиндра)(0-n) ◄╗

CL = номер сектора (1-n) ◄══════╩═ См. замечание ниже.

AL = число секторов (в сумме не больше чем один цилиндр)

ES:BX => адрес буфера вызывающей программы

0:0078 => Таблица параметров дискеты (для гибких дисков)

0:0104 => Таблица параметров твердого диска (для твердых дисков)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

ES:BX буфер содержит данные, прочитанные с диска

Замечание: на сектор и цилиндр отводится соответственно 6 и 10 бит:

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

‘Z’ — код размера сектора: 0=128; 1=256; 2=512; 3=1024

_AT_ Твердый диск: 1 2-байтовый ‘FN’ (Флаг, N сектора) для каждого сектора на дорожке. Последовательность полей ‘N’ определяет «коэффициент прослаивания» («interleave factor»).

_XT_ Твердый диск: ES:BX не используется. Вместо этого AL содержит значение «прослаивания» между 1 и 16 (10H).

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

(твердый диск: ‘F’-поля установлены в 80H, чтобы пометить плохие секторы)

08H _AT_ _XT_ Дать параметры диска. Возвращает информацию об устройстве.

Выход: DL = число тв. дисков на первом контроллере

DH = максимальный номер головки

CH = максимальный номер цилиндра (младшие 8 бит)

CL = максим. номер сектора (и старшие биты макс. номера цилиндра)

09H _AT_ Инициализировать параметры диска. Сообщает BIOS о любом динамическом изменении таблиц параметров устройства.

Вход: Векторы для INT 41H и INT 46H адресуют Табл. параметров тв. диска соответственно для устройств 0 и 1.

Замечание: _XT_ должен указывать обе таблицы через вектор INT 40H.

0aH _AT_ _XT_ Чтение длинное: 512 байт + 4-байтоый ECC (код коррекции ошибок).

Вход: (как для подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

ES:BX => в буфере (данные сектора + 4 байта) * число секторов (из AL)

0bH _AT_ _XT_ Запись длинная. Пишет 512 байт + 4-байтовый ECC.

Вход: (как для подф. 02H)

ES:BX => буфер содержит данные сектора + 4 байта на каждый сектор

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

0cH _AT_ _XT_ Искать цилиндр. Перемещает головку к нужной дорожке.

Вход: DL,DH,CH = диск, головка, дорожка (см. подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

0dH _AT_ _XT_ Альтернативный сброс устройства

0eH _AT_ читать буфер секторов

Вход: (как для подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

0fH _AT_ писать буфер секторов

Вход: (как для подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

10H _AT_ _XT_ проверить готовность устройства

Выход: код ошибки диска (статус) в AH.

11H _AT_ _XT_ Рекалибровать устройство

Выход: код ошибки диска (статус) в AH.

12H _AT_ Диагностика RAM контроллера

Выход: код ошибки диска (статус) в AH.

13H _AT_ Диагностика устройства

Выход: код ошибки диска (статус) в AH.

14H _AT_ _XT_ Внутренняя диагностика контроллера

Выход: код ошибки диска (статус) в AH.

15H _AT_ Читать тип диска (недоступна в XT BIOS)

Выход: AH = код устройства:

0 = устройство DL отсутствует

1 = дискета; логика замены диска отсутствует

2 = дискета; логика замены диска доступна (большинство случаев)

3 = твердый диск

16H _AT_ Читать статус замены диска

Выход: AH = код статуса:

0 = диск не был заменен

6 = замена активна (открыта дисковая дверь);

DL = номер заменяемого диска

17H _AT_ установить тип дискеты (используется перед операцией форматирования)

Вход: DL = номер устройства диска (0 или 1)

AL = тип носителя диска:

0 = не используется

1 = 360K дискета в 360K устройстве

2 = 360K дискета в 1.2M устройстве

3 = 1.2M дискета в 1.2M устройстве

INT 13H возвращает Carry-флаг (CF=1), если произошла ошибка. При этом в регистр

AH помещается один из приведенных ниже кодов ошибок. Эти же значения могут быть

возвращены при запросе состояния диска (подфункция 00H).

Замечание: при ошибке рекомендуется сброс подфункцией 00H и повторить 3 раза.

00H последняя операция выполнена без ошибок

01H плохая команда: неверный запрос к контроллеру

02H плохая адресная марка

03H защита записи: попытка записи на защищенную дискету

04H ID сектора запорчен или не найден.

05H ошибка сброса — _AT_

09H перекрытие DMA: попытка записи через 64K-байтовую границу.

0bH встретился флаг плохой дорожки — _AT_

10H сбой CRC: несовпадение контрольной суммы данных.

11H данные исправлены; исправимая ошибка; исправлено алгоритмом ECC — _AT_

20H сбой контроллера

40H неудачный поиск. Запрошенная дорожка не найдена

80H Таймаут. Устройство не ответило

0bbH неопределенная ошибка — _AT_

0ffH сбой операции опроса (sense) — _AT_

_AT_ . обозначает IBM AT или совместимый; базируется на 80286 CPU

_XT_ . обозначает XT (обычно ссылается на отличия в BIOS твердого диска)

Ссылка на основную публикацию
Adblock
detector