Справочник программиста на персональном компьютере фирмы 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           ;посылаем байт