Адреса в пространстве ввода/вывода: COM1=3F8h, COM2=2F8h, COM3=3E8h, COM4=2E8h В подавляющем большинстве компьютеров имеются два последовательных порта с интерфейсом RS232: СОМ1 и COM2, реже встречаются компьютеры, оснащенные четырьмя последовательными портами: СОМ1, COM2, COM3 и COM4. Базовые адреса портов следующие: СОМ1 - 3f8h, COM2 - 2f8h, COM3 - 3e8h и COM4 — 2e8h. Порт СОМ1 занимает адресное пространство от 3f8h flo3ffh.
Все программы будут приводиться для порта СОМ1. Адаптировать программы к другим портам не составляет большого труда. В скобках дано международное название регистра порта. Рассмотрим регистры порта СОМ 1 более детально.
Регистр данных (data register). Адрес 3f8h. Доступен по записи и по чтению. Используется для двух целей. 1. Ввод из порта и вывод в порт байта данных.
корость обмена по интерфейсу устанавливается следующим образом. Вначале в порт с адресом 3fbh (см. далее) необходимо записать байт, равный 80h, далее в порт с адресом 3f8h — младший байт делителя максимальной скорости обмена 115200 бод, а затем в порт 3f9h -старший байт делителя. Как правило, старший байт делителя используется достаточно редко (для очень медленных скоростей обмена), поэтому он должен быть равен нулю.
Если в младший байт (3f8h) записать 1, то скорость обмена будет равна, как указывалась, 115200 бод. При записи 2 имеем: 115200/2 = 57600 бод; при записи 3 - 115200/3-38400 бод; при записи 12 - 115200/12 = 9600 бод и т.п.
Базовые адреса COM портов выглядят так:
COM1: 3F8h
COM2: 2F8h
COM3: 3E8h
COM4: 2E8h
При включении или перезагрузке компьютера BIOS проверяет адреса всех уста новленных последовательных портов . Если она находит такой порт, то заносит базовый адрес (двухбайтовое слово) в определенную ячейку памяти. Для COM1 это ячейки 0000:0400h и 0000:0401h. Базовый адрес можно получить, считав их содержи мое. Ячейки памяти, в которых содержится информация о базовых адресах установленных последовательных портов , приведены ниже:
COM1: 0000:0400h - 0000:0401h
COM2: 0000:0402h - 0000:0403h
COM3: 0000:0404h - 0000:0405h
COM4: 0000:0406h - 0000:0407h
Однобайтовая ячейка памяти 0000:0411h в первом, втором и третьем битах содержит общее количество установленных COM-портов:
бит 3 = 0, бит 2 = 0, бит 1 = 0
COM-порты не установлены
бит 3 = 0, бит 2 = 0, бит 1 = 1
установлен один COM-порт
бит 3 = 0, бит 2 = 1, бит 1 = 0
установлено два COM-порта
бит 3 = 0, бит 2 = 1, бит 1 = 1
установлено три COM-порта
бит 3 = 1, бит 2 = 0, бит 1 = 0
установлено четыре COM-порта
????????????????