Страница 6 из 27
Регистр разрешения прерывания. Даже если Вы не используете прерывания, все равно Вы должны произвести запись в регистр разрешения прерывания, чтобы быть уверенным, что прерывания запрещены. Просто поместите в этот регистр 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 ;посылаем байт
|