Реферат: Диагностика портов ЭВМ
произошла ошибка
37Ah Чтение/ Регистр управления принтером:
Запись
7 6 5 4 3 2 1 0
+--------------------+
¦X¦X¦X¦ ¦ ¦ ¦ ¦ ¦ Биты:
+--------------------+ -----
¦ ¦ ¦ ¦ +---> 0: бит запуска печати (см. ниже)
¦ ¦ ¦ +------> 1: 1=после возврата каретки выводить
¦ ¦ ¦ перевод строки (в MS-DOS должен
¦ ¦ ¦ быть сброшен)
¦ ¦ +---------> 2: 1=инициализировать принтер
¦ +------------> 3: 1=разрешить вывод на печать (должен
¦ быть всегда установлен)
+---------------> 4: 1=разрешить прерывания от принтера
Примечания.
1. Для запуска печати символа нужно на короткое время установить бит 0 регистра управления, а затем сбросить его.
2. Прерывание происходит по окончании вывода символа на печать: для первого принтера на седьмом уровне контроллера прерываний (IRQ7, вектор прерывания 0Fh), для второго принтера - на пятом уровне (IRQ5, вектор 0Dh). Следует отметить также, что IRQ5 используется XT-контроллером жестких дисков для генерации своих прерываний. Обычно этот бит не используется (сбрасывается), а проверка готовности принтера производится на основании опроса регистра состояния.
Типичная последовательность действий для вывода на печать одного символа такова:
- вывести передаваемый байт в регистр данных;
- в цикле проверять состояние принтера до устaновки бита 7 регистра состояния (здесь возможно использование таймаута);
- проверить биты 3-5 регистра состояния на наличие ошибки;
- установить и сразу же сбросить нулевой бит регистра управления, для этого подходит следующая последовательность команд:
movdx,37Ah ;адрес регистра управления
moval,00001101b ;установить биты 0,2 и 3
outdx,al ;вывести команду
xoral,1 ;сбросить бит 0
outdx,al ;повторно вывести команду
- далее можно прочитать и запрограммировать регистр состояния и перейти к печати следуюего символа.