Garry |
Отправлено: 12.07.2003, 21:21 |
|
Не зарегистрирован
|
Как правильно работать с портами ввода-вывода?
Необходимо управлять устройством через порт ввода-вывода?
Какие существуют стандартные функции или компоненты для работы с портами ввода вывода?
Я попытался реализовать свою задачу путем написания кусочка программы на ассемблере:
...
asm
{
mov dx,pnum
mov ax,pdat
out dx,ax
and pdat,0xfe
mov ax,pdat
out dx,ax
and pdat,0xfd
mov ax,pdat
out dx,ax
}
...
Все прекрасно работает если программу я запускаю под Windows 98, но под Windows XP при попытке выполнить инструкцию out dx,ax мне выдается сообщение:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EPrivilege with message 'Privileged instruction'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Из сообщения понятно, что процессору запрещено выполнять данную инструкцию. Я так понимаю, что это связано с уровнем защищенности системы XP. Как правильно разрешить эту проблему и выполнить запись в порт ввода вывода и произвести чтение информации из порта?
За раннее благодарен.
С уважением
Семеновский Игорь.
|
|
sprinter |
Отправлено: 13.07.2003, 16:56 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Из ранешних FAQ
Посмотри компонент ZComm (free for personal use)
http://www.rogerssisco.com/z.
|
|
FoxVID |
Отправлено: 02.01.2004, 16:41 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 29
|
CODE | Все прекрасно работает если программу я запускаю под Windows 98 |
Честно говоря, удивлен, что в Win98 это еще работает.
Дело в том, что здесь не получится напрямую писать и читать регистры портов. Для этого необходимо использовать WinAPI. Смотри
Работа с коммуникационными портами. Лучше описано только в MSDN |
|
|