"П.Нортон "Программно-аппаратная организация компьютера IBM PC"" - читать интересную книгу автора

команды IN и OUT выполняются вслепую.
Операторы Бейсика обеспечивают прямой доступ к портам. Операторы
Бейсика INP и OUT предоставляют те же возможности, что и машинные команды
IN и OUT. Ниже, просто для примера, приведен фрагмент программы на
Бейсике, работающей с динамиком:


10 X=INP(97) `чтение порта управления динамиком X
20 REM вероятно будет иметь значение 76 - проверьте какое
значение Вы получите
30 OUT 97,X+3 `установить биты управления динамиком- прозвучит сигнал
40 OUT 97,X `снять биты управления - окончание звука


Порты могут использоваться в сочетании с прерываниями. Например,если
нажать клавишу на клавиатуре IBM/PC, никакие данные в компьютер не
передаются. Вместо этого генерируется прерывание номер 9, указывающий, что
имеются данные, которые нужно вводить с клавиатуры. В ответ на прерывание
BIOS в ПЗУ выдаст команду IN для порта клавиатуры. Только после этого
данные, определяющие какая клавиша была нажата, попадут в компьютер.
В случае с памятью может существовать до 1024К различных ячеек,
причем компьютер не знает, какие именно адреса действительно имеются. То
же самое касается и портов - микропроцессор 8088 может обращаться к порту
с любым допустимым номером, не зная, работает ли этот порт или нет.
Адреса портов задаются 16 разрядами, так что потенциально можно иметь
64К различных портов. В действительности используется гораздо меньше
номеров и, следовательно, имеются неограниченные возможности для
расширения.
Имеется несколько способов использования портов в IBM/PC. Первый
способ - это использование порта просто как пути данных. Например, коды
клавиш, указывающие какая из клавиш была нажата, проходят через один порт;
данные, выдаваемые на устройство печати, проходят через другой порт.
Еще один способ использования портов заключается в передаче через них
управляющей информации для внешних устройств и получении от этих устройств
информации о состоянии. Например, инициализация адаптера монохромного
дисплея выполняется через порт 952. Еще одно назначение портов заключается
в считывании положений переключателей в системном блоке, указывающих
конфигурацию системы.
Ниже перечисляются некоторые наиболее важные применения портов. Как и
некоторые подробности организации аппаратных средств, описанные в главе 2,
номера конкретных портов могут не представлять интереса для читателя, но я
привожу их полностью просто для полноты изложения.
Порт 96 (шестнадцатиричное 60) используется для передачи данных в
формате порядковых номеров, от клавиатуры. При описании клавиатуры в главе
10 мы рассмотрим форматы номеров и их использование более подробно.
Порт 97 (61(16)) используется для управления встроенным динамиком, а
также двигателем кассетного механизма. Он также позволяет запустить
аппаратный таймер, что более подробно мы рассмотрим в главе 11.
Порты с 64 по 67 (40(16)-43(16)) используются для управления
программируемым таймером, используемым как динамиком, так и интерфейсом