Страница 1 из 1

Вопрос по программированию NLM

СообщениеДобавлено: 26 июл 2007, 10:29
Олег Дроздов
Как определить адрес порта LPT1 ?
Чтение по линейному адресу 0x408 вызывает исключение.

Спасибо.

Re: Вопрос по программированию NLM

СообщениеДобавлено: 26 июл 2007, 17:32
Аркадий Глазырин
Олег Дроздов писал(а):Как определить адрес порта LPT1 ?
Чтение по линейному адресу 0x408 вызывает исключение.

Спасибо.


Ячейка 0040:0008

В данном примере инициализируется LPT1:

Код: Выделить всё
;---инициализируем LPT1
          MOV  DX,ES:[8]    ;считываем базовый адрес в DX
          INC  DX           ;прибавляем 2 к базовому адресу
          INC  DX           ;
          MOV  AL,12        ;значение для инициализации
          OUT  DX,AL        ;начинаем инициализацию
          DELAY:    MOV  AX,1000      ;начало пустого цикла
          DEC  AX           ;уменьшаем счетчик
          JNZ  DELAY        ;повторяем 1000 раз
          MOV  AL,8         ;обычное значение для регистра
          OUT  DX,AL        ;конец инициализации


Базовые адреса для LPT1-3 хранятся со смещениями 8, 10 и 12 в области данных BIOS (начинающейся с 0040:0000).

СообщениеДобавлено: 27 июл 2007, 14:18
Олег Дроздов
0040:0008 в real mode == 0:408, а куда отображается это в PM я не знаю. Так что будем использовать 378, тем более, что в сетапе на современных матерях можно менять.