Ввод из порта и вывод в порт
В главе 5 при обсуждении вопроса о том, где могут находиться операнды машин-
ной команды, мы упоминали порт ввода-вывода. Физически порт ввода-вывода
представляет регистр разрядностью 8, 16 или 32 бита. Доступ к устройствам вво-
да-вывода, системным устройствам компьютера осуществляется посредством этих
регистров, причем каждый из этих регистров должен иметь возможность уникаль-
ной идентификации. С этой целью архитектурно процессор поддерживает так
называемое адресное пространство
Адресное пространство ввода-
вывода физически независимо от пространства оперативной памяти и имеет огра-
ниченный объем, составляющий
или 65 536, адресов ввода-вывода.
Таким образом, порт ввода-вывода можно определить как
16- или 32-раз-
рядный аппаратный регистр, имеющий определенный адрес в адресном простран-
стве ввода-вывода. Вся работа системы с устройствами на самом низком уровне
выполняется с использованием портов ввода-вывода. Посмотрите на рис. 7.1. На
нем показана сильно упрощенная концептуальная схема управления оборудова-
нием компьютера.
Глава 7. Команды обмена данными
Программа пользователя
Функции операционной системы
Функции BIOS
Пространство портов ввода-вывода
Аппаратура компьютера
Рис.
Концептуальная схема управления оборудованием компьютера
Как видно из рисунка, самым нижним уровнем является уровень BIOS, на ко-
тором работа с оборудованием ведется напрямую через порты. Тем самым реали-
зуется концепция независимости от оборудования. При замене оборудования по-
требуется лишь подправить соответствующие функции BIOS, переориентировав
их на новые адреса и логику работы портов.
Принципиально управлять устройствами напрямую через порты несложно.
Сведения о номерах портов, их разрядности, формате управляющей информации
приводятся в техническом описании устройства. Необходимо знать лишь конеч-
ную цель своих действий, алгоритм, в соответствии с которым работает конкрет-
ное устройство, и порядок программирования его портов. То есть, фактически,
нужно знать, что и в какой последовательности нужно послать в порт (при записи
в него) или считать из него (при чтении) и как следует трактовать эту информа-
цию. Для этого достаточно всего двух команд, присутствующих в системе команд
процессора:
in
— ввод в аккумулятор из порта с номером <но-
out
— вывод содержимого аккумулятора в порт
с номером
Возможные значения операндов этих команд приведены в приложении. Необ-
ходимо отметить, что использовать эти команды вы сможете без проблем только
в программе, предназначенной для MS-DOS. При попытке их запуска в програм-
ме для Windows вы получите ошибку. Это не означает невозможности запуска ис-
полняемого модуля описанной далее программы в сеансе Windows. Более того,
Windows поддержит реализацию полного цикла разработки данной программы,
но сделано это будет в специальном режиме работы — режиме виртуального
цессора х86.
В качестве примера рассмотрим, как на уровне аппаратуры заставить компью-
тер издавать звуки через свой внутренний динамик. На большинстве компьюте-
ров читателей это будет некоторый треск. Изменяя различные параметры програм-
мы, в идеале, вы можете получить звук, напоминающий сирену.
Вначале мы перечислим, какие аппаратные ресурсы будут задействованы и как
ими надо управлять.
Ввод из порта и вывод в порт
В большинстве компьютеров есть внутренний динамик. Раньше он использо-
вался для того, чтобы издавать звуки при работе самых различный приложений,
вплоть до игровых. Сейчас у него осталась единственная важная функция — вос-
произведение звуков, которые генерирует BIOS на этапе тестирования и началь-
ной загрузки.
Do'stlaringiz bilan baham: |