1


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

所以总结一下,我想知道如何通过程序集与某些端口进行交互,

我目前正在使用 DosBox 运行程序集,并使用平面汇编程序进行编程。这一切都在窗口 8 上运行。

在此先感谢 36redsoxfan

4

2 回答 2

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 
于 2013-02-08T23:26:17.627 回答
0

如前所述,这完全是使用 in 和 out 将正确的位写入正确的端口的问题。最大的问题是,如果你在 Windows 机器上以用户模式运行,你将没有足够的权限让你这样做——你需要作为内核模式驱动程序运行(即使那样你可能调用操作系统提供的接口,而不是进行汇编级硬件访问)。我自己没有使用过 DosBox,但一般来说,像这样的模拟器只会模拟对底层硬件的访问 - 因此它可能允许您写入模拟的并行端口,但这实际上不会改变硬件上的电压电平并行端口 - 这仍然受 Windows 限制..

然后,您的选择取决于您到底想做什么。一些可能的选择:

  • 如果你只是想玩组装访问硬件,但不需要实际访问物理硬件,那么你可能会找到一个模拟器,它至少可以模拟一些硬件,并向你展示你在这个模拟硬件上的组装操作的结果.
  • 如果您想在 Windows 环境中使用程序集访问物理硬件,那么您可能需要环顾四周,看看是否有任何模拟器使用 Windows 驱动程序将您的命令传递给物理硬件,而不仅仅是模拟设备。
  • 如果您想使用 Windows 环境之外的程序集访问物理硬件,那么您只需要找到一个操作系统或引导加载程序,它允许您的程序集代码直接访问硬件。
  • 如果它不必组装,那么还有其他可用选项(这是我过去在 Windows 环境中使用并行端口时所走的路径)。
于 2013-02-09T06:43:39.830 回答