Адреса портов ввода-вывода
Через порты ввода-вывода к компьютеру можно подключать разнообразные устройства для расширения его возможностей. Принтер, подключенный к одному из параллельных портов LPT, позволяет вывести на бумагу результаты работы. Модем, соединенный с одним из последовательных портов СОМ, обеспечивает связь по телефонным линиям с другими компьютерами, находящимися за тысячи километров от вас. Сканер, подключенный к порту LPT или адаптеру SCSI, позволяет ввести в компьютер графические изображения или текст непосредственно с листа бумаги и преобразовать их в необходимый формат для дальнейшей обработки.
В большинстве компьютеров имеется хотя бы два последовательных порта и один параллельный. Последовательные порты обозначаются как СОМ1 и COM2, а параллельный — LPT1. В принципе в компьютере можно установить до четырех последовательных (СОМ 1-COM4) и трех параллельных (LPT1-LPT3) портов.
Порты ввода-вывода позволяют установить связь между устройствами и программным обеспечением в компьютере. Они подобны двусторонним радиоканалам, так как обмен информацией в ту и другую сторону происходит по одному и тому же каналу.
В отличие от прерываний IRQ и каналов прямого доступа к памяти, в персональных компьютерах множество портов ввода-вывода. Существует 65 535 портов, пронумерованных от OOOOh до FFFFh, и это, пожалуй, самый удивительный артефакт в процессоре Intel. Хотя многие устройства используют до восьми портов, все равно их количество более чем достаточное. Самая большая проблема состоит в том, чтобы двум устройствам случайно не назначить один и тот же порт.
Современные системы, поддерживающие спецификацию Plug and Play, автоматически разрешают любые конфликты из-за портов, выбирая альтернативные порты для одного из конфликтующих устройств.
Хотя порты ввода-вывода обозначаются шестнадцатеричными адресами, подобными адресам памяти, они не являются памятью, они — порты. Различие состоит в том, что данные, посланные по адресу памяти 1 OOOh, будут сохранены в модуле памяти SIMM или DIMM. Если вы посылаете данные по адресу 1 OOOh порта ввода-вывода, то они попадают на этот "канал" шины и любое устройство, прослушивающее канал, может принять их. Если никакое устройство не прослушивает этот адрес порта, то данные достигнут конца шины и будут поглощены ее нагрузочными резисторами.
Специальные программы — драйверы — взаимодействуют прежде всего с устройствами, используя различные адреса портов. Драйвер должен знать, какие порты использует устройство, чтобы работать с ним. Обычно это не проблема, поскольку и драйвер и устройство, как правило, поставляются одним и тем же производителем.
Системная плата и набор микросхем системной логики обычно используют адреса портов ввода-вывода от Oh до FFh, а все другие устройства — от 100h до FFFFh.