Assembler - язык неограниченных возможностей


Последовательный порт


Каждый из последовательных портов обменивается данными с процессором через набор портов ввода-вывода: СОМ1 = 03F8h – 03FFh, COM2 = 02F8h – 02FFh, COM3 = 03E8H – 03EFh и COM4 = 02E8h – 02EFh. Имена портов СОМ1 – COM4 на самом деле никак не зафиксированы. BIOS просто называет порт СОМ1, адрес которого (03F8h по умолчанию) записан в области данных BIOS по адресу 0040h:0000h. Точно так же порт COM2, адрес которого записан по адресу 0040h:0002h, COM3 — 0040h:0004h и COM4 — 0040h:0006h. Рассмотрим назначение портов ввода-вывода на примере 03F8h – 03FFh.

    03F8h для чтения и записи — если старший бит регистра управления линией = 0, это — регистр передачи данных (THR или RBR). Передача и прием данных через последовательный порт соответствуют записи и чтению именно в этот порт.

    03F8h для чтения и записи — если старший бит регистра управления линией = 1, это — младший байт делителя частоты порта.

    03F9h для чтения и записи — если старший бит регистра управления линией = 0, это — регистр разрешения прерываний (IER):

    бит 3: прерывание по изменению состояния модема

    бит 2: прерывание по состоянию BREAK или ошибке

    бит 1: прерывание, если буфер передачи пуст

    бит 0: прерывание, если пришли новые данные

03F9h для чтения и записи — если старший бит регистра управления линией = 1, это — старший байт делителя частоты порта. Значение скорости порта определяется по значению делителя частоты (табл. 20).


Таблица 20. Делители частоты последовательного порта


Делитель частоты Скорость
0000h 115 200
0001h 57 600
0002h 38 400
0006h 19 200
000Ch 9 600
0010h 7 200
0018h 4 800
0020h 3 600
0030h 2 400


03FAh для чтения — регистр идентификации прерывания. Содержит информацию о причине прерывания для обработчика:




Начало  Назад  Вперед