Регистр разрешения прерываний

Jmp short ketry

In al, dx

Jmp short ketry

Mov ah, 0

Mov es, ax

Mov ax, 40h

Текст программы

 

ketry: mov dx, es:[0] ;базовый адрес порта COM в dx

add dx, 5; адрес регистра статуса в dx

in al,dx ;читаем в регистр al

test al, 00011110b ;проверка на ошибку порта

jnz error ;если есть ошибки, то на метку error

test al, 00000001b ;данные получены?

jnz prb ;если байт принят, то на метку prb

test al, 00100000b ; регистр хранения передатчика пуст?

jz ketry ;в начало

mov ah, 1 ;иначе

int 16h ;проверка клавиатуры

jz ketry ;если в буфере клавиатуры нет кода, то в начало

int 15h ;загрузка символа с клавиатуры в al

sub dx, 5 ;вычисляем адрес регистра хранения

out dx, al ;загрузка символа в регистр хранения порта

prb: mov dx, es:[0]

 

 

Работа COM – порта в режиме прерываний

Сигнал прерываний от COM – порта поступает на вход контроллера прерываний. Если прерывания разрешены, то программа обработки прерываний в зависимости от состояния регистра статуса может принимать или передавать байт.

Для инициализации работы порта в данном режиме регистр разрешения прерываний должен быть загружен определенным образом.

 

 
 

 

 


В указанные ниже разряды регистра необходимо записать единицы, которые разрешают прерывания по перечисленным причинам:

Бит 0 – прерывание при получении данных

Бит 1 – прерывание, когда регистр хранения передатчика пуст

Бит 2 – прерывания при ошибке приема данных

Бит 3 – прерывания при изменении регистра статуса модема