Глава 7. Ввод/вывод.
Раздел 1. Доступ к последовательному порту.
7.1.3 Установка текущего коммуникационного порта.
Имеются два способа, которыми программа может определить, какой из коммуникационных портов должен использоваться. Один из способов состоит в указании номера канала в операторе программы. Второй способ состоит в написании программы для обмена через порт COM1, но изменении коммуникационного адаптера, доступ к которому идет через COM1.
Область данных BIOS содержит место для четырех 2-хбайтных переменных, которые содержат базовые адреса коммуникационных каналов (MS DOS поддерживает только первые два из них). Базовый адрес порта это младший из группы адресов портов, через которые можно получить доступ к данному коммуникационному каналу. Базовый адрес для COM1 хранится в ячейке 0040:0000, а для COM2 - в ячейке 0040:0002. Для смены коммуникационных портов надо просто поменять эти два значения. Повторная смена значений приведет к первоначальному назначению портов.
Средний уровень.
Если программа обращается к коммуникационному порту через прерывание 14H BIOS, то COM порт определяется содержимым DX, которое равно 0 или 1 (для COM1 или COM2). Вместо того, чтобы присваивать DX непосредственное значение, заполняйте его из переменной, которой может быть присвоено значение 0 или 1. Программы, использующие коммуникационные функции 3 и 4 прерывания 21H всегда адресуются к COM1. В этом случае надо поменять базовые адреса:
;---обмен базовых адресов для COM1 и COM2 | |
MOV AX,40H | ;ES указывает на область данных BIOS |
MOV ES,AX | ; |
MOV DX,ES:[0] | ;помещаем 1-й базовый адрес в DX |
MOV AX,ES:[2] | ;помещаем 2-й базовый адрес в AX |
MOV ES:[0],AX | ;обмениваем адреса |
MOV ES:[2],DX | ; |
<~-7.1.2 Инициализация последовательного порта.
Содержание
7.1.4 Определение статуса коммуникационного порта.-~>