2013-02-08 59 views
1


我已经学会了一些汇编代码,并且还了解到在互联网上没有那么多好的教程。我想知道发送信号到某些设备
前。并行端口,USB(可能)
我想知道是否有任何代码可以分享给我带来正确的方向。如果你不知道信号,我的意思是发出电压。


因此,总结一下,我想知道如何与装配的某些端口进行交互

我目前使用DosBox运行程序集,并使用平面汇编程序进行编程。这是所有在窗口中运行8

由于提前,36redsoxfan程序集I/O编程

+0

in xx yy,out xx? – 2013-02-08 23:22:02

回答

1

我不是专家FASM ......但是,根据这个帖子...可能会或可能不会对FASM ...

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

设置BIOS为双向并行端口模式(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 2013-02-08 23:29:10

+0

请做!我会很有兴趣知道! – PGallagher 2013-02-08 23:29:46

+0

它不适用于我,因为我得到了错误'Base Parallel is undefined'。我想我只是使用C/C++,因为无论如何,访问 – 36redsoxfan 2013-02-08 23:35:32

0

这是写正确的位来使用和出正确的端口的所有问题,因为已经说明。最大的问题将是,如果你在Windows系统下以用户模式运行,你将不会有足够的权限让你这样做 - 你需要作为内核模式驱动程序运行(即使你是可能会调用OS提供的接口,而不是执行汇编级硬件访问)。我自己并没有使用DosBox,但通常这样的模拟器只会模拟访问底层硬件 - 因此它可能允许您写入模拟并行端口,但这实际上并不会改变电压级别你的硬件并行端口 - 这仍然受到Windows的限制..

你的选择然后取决于你想要做什么。一些可能的选项:

  • 如果你只是想玩弄装配访问硬件,但不需要实际上访问物理硬件,那么你也许可以找到一个模拟器,这将效仿至少一些硬件和向您展示在此仿真硬件上进行装配操作的结果。
  • 如果您想在Windows环境中使用汇编访问物理硬件,那么您可能必须环视四周,看看是否有任何使用Windows驱动程序的模拟器将命令传递给物理硬件,而不仅仅是一个仿真设备。
  • 如果你想使用Windows环境以外的程序集来访问物理硬件,那么你只需要找到一个OS或引导程序,它允许你的汇编代码直接访问硬件。
  • 如果不需要组装,那么还有其他选项可用(这是我在过去使用Windows环境中的并行端口时所走过的路径)。