Справочник программиста на персональном компьютере фирмы IBM. Ввод/вывод - Регистр разрешения прерывания
ОГЛАВЛЕНИЕ
Регистр разрешения прерывания.
Даже если Вы не используете прерывания, все равно Вы должны
произвести запись в регистр разрешения прерывания, чтобы быть
уверенным, что прерывания запрещены. Просто поместите в этот
регистр 0. Регистр идентификации прерывания можно игнорировать.
Инициализация остальных регистров связана с модемами. Ясно,
что модемы нужны только для связи с удаленными устройствами, а не
для управления близлежащими устройствами, такими как последова-
тельный принтер. В [7.1.5] объяснено как инициализировать регистр
контроля модема.
В данном примере из области данных BIOS берется базовый адрес
COM1, после чего различные регистры инициализируются для скорости
обмена 1200 бод, семибитных данных, четной четности и одного
стоп-бита.
;---получаем базовый адрес COM1
MOV AX,40H ;ES указывает на область данных BIOS
MOV ES,AX ;
MOV DX,ES:[0] ;получаем базовый адрес COM1
;---инициализируеи регистры делителя скорости обмена на 1200 бод
ADD DX,3 ;указываем на регистр контроля линии
MOV AL,10000000B ;устанавливаем бит 7
OUT DX,AL ;посылаем байт
DEC DX ;указываем на старший байт делителя
DEC DX ;скорости обмена
MOV AL,0 ;старший байт для 1200 бод
OUT DX,AL ;посылаем старший байт для 1200 бод
DEC DX ;указываем на младший байт делителя
MOV AL,60H ;младший байт делителя для 1200 бод
OUT DX,AL ;посылаем младший байт
;---инициализируем регистр контроля линии
MOV AL,0 ;обнуляем AL
OR AL,10B ;длина данных 7 битов
OR AL,000B ;1 стоп-бит
OR AL,1000B ;генерируется бит четности
OR AL,10000B ;четная четность
ADD DX,3 ;указывает на регистр контроля линии
OUT DX,AL ;посылаем инициализационное значение
;---инициализируем регистр разрешения прерывания
DEC DX ;указываем на регистр разрешения
DEC DX ;прерывания
MOV AL,0 ;запрещаем прерывания
OUT DX,AL ;посылаем байт