Главная категория > Компьютеры, сканеры ШК, Клавиатуры, принтеры и ПО и т.д.
решил написать програмный эмуль эклз через ком порт. проблемы. хелп, коллеги.
tridentxp:
не побоюсь показаться незнайкой: 0 - кольцо защиты - уровень асмы, системы. она туда драйвирь не пустит. либо мы разговариваем про сено и солому, либо...
tridentxp:
вот на си билдере 6 навлял включение асмы, запустил без giveio. сразу же получил системную ошибку приложения. с гивио - как бабка отвела, из чего я делаю вывод, что всётаки моё пользовательское приложение всётаки заставило проц пошевилить шиной данных, адреса, и лапой ~IORQ проца (если такая ваще реализована... но уж если есть комманды in dx,... out dx.., то уж должна быть по логике). дык с учётом сказаного, я так полагаю система сама распределяет свою времменую нагрузку по своему усмотрению, что есно ведёт к непредсказуемости временного доступа к портам.
drfaust:
--- Цитата: tridentxp от 22/02/2012 23:39:18 --- 0 - кольцо защиты - уровень асмы, системы. она туда драйвирь не пустит.
--- Конец цитаты ---
Обломинго-птичка прилетела. На асме в Винде написан только hal - уровень абстракции железа. Всё остальное на 90% на С. Драйвера могут писаться как на С, так и на АСМе. Драйвера работают в 0м кольце, только там есть прямой доступ к железу.
Если любопытно, можешь посмотреть примеры дров WDK
При использовании в 3м кольце защиты инструкций in; out; вызывает исключение, которое перехватывается операционкой, и уже она думает чё с этим делать. Часто операционка просто посылает прогу в аут.
tridentxp:
тогда вопрос: что сделает си билдер с таким ?
asm{ mov dx,890
in al,dx
...
}
? и как и что с этим будет делать потенциальный драйзвирь ?
Prz777:
Ещё про LPT - http://progrex.narod.ru/
Навигация
Перейти к полной версии