Алгоритм - Учебный центр
Заполните форму ниже! Мы вам перезвоним!

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


BIOS. Управление внешними устройствами ПК.

BIOS. Управление внешними устройствами ПК.

Главная функция микропроцессора — это выполнение заданного для него набора команд:

- выполняя последовательность команд (т. е. Программу) он вычисляет, управляет внешними устройствами, рассчитывает зарплату и т.п. , он может выполнять и бессмысленную последовательность своих команд - ему все равно — он автомат (принцип программного управления — мы пишем программу — он исполняет);

- для реализации Главной функции процессор выполняет целый ряд аппаратных функций: формирует адреса для выборки последовательности команд, инициирует на Системном интерфейсе операцию «Чтение команды» и др.;

Главная внешняя функция микропроцессора - это инициирование операций обмена на системном интерфейсе. Выбирая команды, выполняя большинство команд, выполняя аппаратную функцию прерывания процессор инициирует на системном интерфейсе операции обмена: «Чтение команды», «Чтение данных из памяти», «Запись данных в память», «Чтение порта», «Запись в порт», «Чтение дескриптора» и др.

Операцию обмена «Чтение порта» - процессор инициирует выполняя свою команду IN AL,DX — чтение порта, а «Запись в порт» - отрабатывая свою команду OUT DX,AL — запись в порт.

Выполняя, например, команду сложения ADD [1000], BX процессор два раза обратится в ОЗУ:

  • первый раз — для чтения второго слагаемого (из ячейки с адресом 1000),

  • а второй раз - для записи результата сложения содержимого регистра BX со вторым слагаемым (по адресу 1000).

В операциях обмена с одной стороны всегда участвует один из регистров процессора, а с другой стороны - ячейка оперативной памяти (DRAM или ПЗУ BIOS), или регистр контроллера внешнего устройства, или регистр чипсета и других микросхем (исключение — обмен по «прямому доступу»).

А что есть у процессора для управления внешними устройствами (устройствами ввода, вывода, устройствами внешней памяти)? Есть всего две команды: IN и OUT («чтение порта» и «запись в порт»), и есть аппаратная функция «прерывание» (без которой он в принципе может обойтись). Есть еще две команды — INS, OUTS (без которых он в принципе тоже может обойтись).

А что вообще доступно процессору во «внешней среде»? Ему доступны регистры контроллеров внешних устройств (например, видеоадаптера, принтера и др.), регистры чипсета и других микросхем, ячейки оперативной памяти (DRAM или ПЗУ BIOS) для чтения и записи.

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

- регистр данных;

- регистр управления (регистр команд);

- регистр состояния.

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

  • INT 10h, функция 00h - Установка видеорежима;

  • INT 10h, функция 02h - Установка позиции курсора;

  • INT 10h, функция 09h - Запись символа и атрибута в позицию курсора;

  • INT 10h, функция 0Сh - Запись пиксела;

  • и т. д..

«Прерывание» по команде INT 10h передает управление программе обслуживания BIOSa видеосистемы, которая по номеру функции (02h, 09h, 0Ch...) запускает соответствующую программу BIOS на исполнение. Используя программы BIOS можно достаточно просто создавать программы для диагностики даже видеосистемы и создавать условия для исследования процессов осциллографом и т. д.

Примеры по ФУНКЦИЯМ BIOS видеосистемы.

Справочные данные по функциям BIOS:

INT 10h, функция 00h. Установка видеорежима.

Устанавливает текущий видеорежим. При вызове (в регистры процессора нужно занести):

AH=00h

АL= видеорежим, например:

03h - текстовый, 80х25 строк, 16 цветов

10h - графический, 640х350 точек,16 цветов

04h - графический, 320х200 точек, 4 цвета (видеоадаптер CGA)

. . . и выполнить INT 10h

INT 10h, функция 02h. Установка позиции курсора.

Задает положение курсора на экране в текстовых координатах на указанной текстовой странице(в том числе

не активной). При вызове:

AH = 02h

ВН = страница

DН = строка

DL = столбец . . . и выполнить INT 10h

INT 10h, функция 09h. Запись символа и атрибута в позицию курсора.

Записывает символ и его атрибут в текущую позицию курсора как в графическом, так и в текстовом режимах.

В графическом режиме символы не должны переходить на следующую строку. Все коды в AL рассматриваются, как знаки и не управляют положением курсора. После вывода символа курсор следует сместить к следующей позиции функцией 02h. Коэффициент повторения позволяет выводить строки одинаковых символов (но курсор не смещается). В текстовом режиме символ выводится с указанным атрибутом, т.е. заданного цвета на заданном фоне. В графическом режиме содержимое BL влияет только на цвет символа, но не фона под ним. Однако графическое изображение под знакоместом затирается. При вызове:

AH=09h

AL=cимвoл

ВН = страница

ВL = атрибут (текстовый режим) или цвет(графический режим)

СХ = коэффициент повторения . . . и выполнить INT 10h

Атрибут символа определяет цвет символа и фона под ним, а также некоторые дополнительные характеристики изображения на экране.

Структура байта атрибутов

В биты 0...2 байта атрибутов записывается код цвета символа, а бит 3 при исходной настройке видеоадаптера, действующей по умолчанию, управляет яркостью символа. Таким образом, каждый символ независимо от других может принимать любой из 16 возможных цветов. Соответствие кодов, записываемых в байте атрибута, конкретным цветам составляет палитру видеосистемы. Палитра устанавливается программно, по умолчанию действует назначение кодов приведенное в таблице:

INT 10h, функция 0Сh. Запись пиксела.

Записывает в видеобуфер точку заданного цвета в заданной графической позиции.

При вызове:

AH=0Ch

AL-цвет (номер цветового регистра)

ВН - страница

СХ=графический столбец

DX=графическая строка . . . и выполнить INT 10h

 

  

 

INT 13h, функция 00h. Сброс дисковой системы.

Приводит дисковый контроллер в исходное состояние, позиционирует головки на цилиндр 0 и подготавливает систему к вводу-выводу.

При вызове:

AH=00h

DL=дисковод (00h...7Fh - гибкий диск ,80h...FFh - жесткий диск)

При ошибке: CF=1

АН= состояние

Примеры по дополнительным ФУНКЦИЯМ BIOS дисков.

Прерывание Int 13h, функция 42h: расширенное чтение

Функция осуществляет передачу секторов с заданной области диска в буфер памяти.

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

в АН — значение 42h;

в DL — номер дисковода;

в DS: SI — пакет дискового адреса.

После завершения операции функция возвращает в регистре АН состояние дисковой системы (или код ошибки). В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).

Прерывание Int 13h, функция 43h: расширенная запись

Функция осуществляет передачу секторов из буфера памяти в заданную область диска. Запись данных проводится в режиме верификации, то есть после записи выполняется проверка секторов.

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

в АН — значение 43h;

в AL — код режима записи (0 или 1 — запись без верификации, 2 — запись с верификацией);

в DL — номер дисковода;

в DS: SI — пакет дискового адреса.

После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно записаны (записаны до того, как произошла ошибка). Причиной аварийного завершения , данной функции может быть отсутствие у заданного устройства поддержки команды записи данных с верификацией.

Проверить наличие поддержки записи с верификацией можно при помощи функции 48h.

Прерывание Int 13h, функция 44h: верификация секторов

Функция осуществляет проверку секторов на диске по их контрольным суммам (без передачи информации между диском и оперативной памятью).

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

в АН — значение 44h;

в DL — номер дисковода;

в DS: SI – пакет дискового адреса.

После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно верифицированы (проверены до того, как произошла ошибка).

 

Какие проблемы решают за счет использования таких программ ?

Восстановление системных областей (MBR, BOOT). После высокоуровнего форматирования разделов HDD, cтруктуры MBR и BOOT являются константами. Их копируют, например, в секторы 3 и 5 - 0 цилиндра - 0 поверхности этого HDD, и пишут программки их восстановления из этих копий (из сектора в сектор).

С помощью таких программ можно «спасать» файлы используя знание структур файловых систем «вручную».

С помощью таких программ можно «вручную» восстанавливать правильность служебных структур файловых систем.

С помощью таких программ можно тестировать и проводить диагностику HDD и др. устройств, создавать условия для исследования процессов с помощью осцилографа и многое другое ...

 


Лицензия