2013-02-08 4 views
1


Я узнал немного кода сборки, а также узнал, что для этого нет хороших учебных пособий в Интернете. Мне было интересно, как отправлять сигналы на определенные устройства
ex. параллельные порты, usb (возможно)
Мне было интересно, есть ли какой-либо код, который может поделиться, чтобы привести меня в правильном направлении. И в случае, если вы не знаете по сигналу, я имею в виду отправку напряжения.

Итак, чтобы подвести итог, я хотел бы знать, как взаимодействовать с некоторыми портами с помощью сборки

В настоящее время я использую DosBox для запуска сборки и использования плоского ассемблера для программирования. Все это работает на окне 8.

Спасибо заранее, 36redsoxfanПрограммирование входов/выходов

+0

в xx yy, out xx? –

ответ

1

Я не эксперт FASM ... Но, согласно этому сообщению ... Что может или не может быть для FASM ...

http://board.flatassembler.net/topic.php?t=8638

Установите биос как режим двунаправленного параллельного порта (SPP)

Это устанавливает разрешение I/O:

mov eax,101      ; SYS_IOPERM 
mov ebx,Base_Parallel   ; 378H 
mov ecx,Size      ; 3 
mov edx,1       ; Turn ON 
int 80H 
test eax,eax 
js Error_Set_IO 

написать:

mov dx,37ah 
in al,dx 
and al,11011111b    ; reset bit 5 (Write mode) 
out dx,al 

mov al,0ffh       ; turn on all 8 pin 
mov dx,378h 
out dx,al       ; Write byte 

читать:

mov dx,37ah 
in  al,dx 
or  al,00100000b   ; set bit 5 (Read mode) 
out dx,al 

mov dx,378h 
in al,dx      ; Read byte 
+0

спасибо: D Я попробую и скажу, если это работает – 36redsoxfan

+0

Пожалуйста! Мне будет интересно узнать! – PGallagher

+0

Это не работает для меня, потому что я получил ошибку «Base Parallel is undefined». Я думаю, что я просто использую c/C++, потому что будет намного проще получить доступ к – 36redsoxfan

0

Это все дело писать правильные биты к соответствующим портам, используя в и, как уже было сказано , Большая проблема будет заключаться в том, что если вы работаете в режиме пользователя в окне Windows, у вас не будет достаточных разрешений, чтобы позволить вам это сделать - вам нужно работать как драйвер режима ядра (и даже тогда вы вероятно, вызывая интерфейсы, поставляемые с ОС, а не на аппаратный доступ на уровне сборки). Я сам не использовал DosBox, но в общем эмулятор, подобный этому, будет только emulate доступ к базовому оборудованию - чтобы он мог писать на эмулированный параллельный порт, но это фактически не изменит уровни напряжения на ваш аппаратный параллельный порт - это все еще зависит от ограничений Windows.

Ваши варианты зависят от того, что именно вы хотите сделать. Некоторые возможные варианты:

  • Если вы просто хотите, чтобы играть с сборочным доступом к оборудованию, но не нужно фактически доступа физического оборудования, то вы, вероятно, можете найти эмулятор, который будет эмулировать по крайней мере, некоторым аппаратным средствам, и покажите вам результаты ваших сборочных операций на этом эмулированном оборудовании.
  • Если вы хотите получить доступ к физическому оборудованию с помощью сборки в среде Windows, вам, вероятно, придется осмотреться и посмотреть, есть ли какие-либо эмуляторы, которые используют драйверы Windows для передачи ваших команд на физическое оборудование, а не только эмулируемое устройство.
  • Если вы хотите получить доступ к физическому оборудованию с помощью сборки вне среды Windows, вам просто нужно найти ОС или загрузчик, который позволяет вашему ассемблеру напрямую обращаться к оборудованию.
  • Если нет необходимости в сборке, тогда есть другие доступные опции (это путь, который я уже прошёл при игре с параллельным портом в среде Windows).
Смежные вопросы