Адреса портов ввода-вывода Порты ввода-вывода позволяют установить связь между устройствами и программным обеспечением н компьютере. Они подобны двусторонним радиоканалам, так как обмен ин- формацией в ту и другую сторону происходит по одному и тому же каналу. В отличие от прерываний IRQ и каналов прямого доступа к памяти, в персональных ком- пьютерах множество портов ввода-вывода. Существует 65 535 портов, пронумерованных от ООООЬ до FFFFh, и это, пожалуй, самый удивительный артефакт в процессоре Intel. Хогя мно- гие устройства используют до восьми портов, все равно их более чем достаточно. Самое глав- ное — случайно не назначить двум устройствам один н тот же порт. Современные системы, поддерживающие спецификацию Plug and Play, автоматически разрешают любые конфликты из-за портов, выбирая альтернативные порты для одного из конфликтующих устройств. Хотя порты ввода-вывода обозначаются шестнадцатеричными адресами, подобными адресам памяти, они не являются памятью, они — порты. Различие состоит в том, что данные, отправленные по адресу памяти lOOOh, будут сохранены в модуле памяти SIMM или DIMM. Если вы посылаете данные по адресу lOOOli порта ввода-вывода, то они попадают на этот "капал" шины и любое устройство, прослушивающее канал, может принять их. Если никакое устройство не прослушивает этот адрес порта, то данные достигнут конца шины и будут поглощены ее нагрузочными резисторами. Специальные программы — драйверы — взаимодействуют прежде всего с устройствами, используя различные адреса портов. Драйвер должен "знать", какие порты использует уст- ройство, чтобы работать с ним. Обычно это не составляет проблемы, поскольку и драйвер и устройство, как правило, поставляются одним и тем же производителем. Системная плата и набор микросхем системной логики обычно используют адреса портов ввода-вывода от Oh до FFh, а все другие устройства — от 100h до FFFFh. В табл. 5.5 приведены адреса портов ввода-вывода, обычно используемые системной платой и набором микросхем системной логики.
|