如何访问物理端口?(60分)

  • 主题发起人 主题发起人 victor
  • 开始时间 开始时间
V

victor

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在delphi中访问物理端口和一些寄存器?
能在delphi中加入汇编语言吗?若能,如何加?

谢!
 
asm
mov ax,$06
...
end
 
function inportb(portAddr: word): byte;
asm
mov dx, portAddr
in al, dx
end;

procedure outportb(portAddr: word; bytePut: byte);
asm
mov cl, bytePut //save dl to cl, bytePut is Passed by DL Register
mov dx, portAddr
mov al, cl
out dx, al
end;
 
有专门的控件,好像控件库里面有,我这也有,发给你了!
 
你的问题好象和“ 如何利用DELPHI在WinNT4.0下面实现I/O操作和中断处理? ”
是一样的,它现在在以答问题第八条
控件在download.fzu.seu.edu(Delphi深度历险)里有,我刚下过
TDLPortIO 是一个免费的 DriverLINX kernel Mode Driver 的 Wrapper 构件,
能够搭配免费的 DriverLINX kernel Mode Driver 在 Windows 95/98/NT 下完整
控制硬件设备的 I/O ( 1.13 版,附源码 ),作者: John Pappas
(DiskDude)。 //good!

gwiopm.zip 提供 Windows NT 下硬件 I/O 函式的类,提供了通用的设备驱动过程
来维护 kernel I/O permissions map ( 2 版,附源码 ) ,作者 : Graham Wideman。


Port95Nt 是组通用功能的设备驱动过程,提供 Windows 95 Vxd 通用设备驱动过程
及 Windows NT Kernel Mode 通用设备驱动过程,透过该设备驱动过程能够直接存
取 0x0100h 至 0xFFFFh 的硬件 I/O 口 ( 1.0 版,无源码 ,附 Micorosft Visual C++、 Visual Basic、Delphi 2.0 的使用范例 ) ,作者 : Scientific
Software Tools, Inc 。

prntraid 直接存取硬件设备 I/O 口地址 ( I/O Port Address ) 的非可视构件
( 1998 年 7 月 7 日版,附源码 ),作者 : David Beale。

我以为其中DLPortIO和gwiopm.zip 最好
 
谁知道 Delphi 1.0 里面的 Ports[] 全局数组哪里去了? 记得在1.0中对端口操作
十分方便.
 
端口操作在Windows9x中嵌入汇编实现是很简单的,不过在NT中或者采用
别人的控件,或者开发自己的设备驱动程序,恐怕没有别的方法。
 
procedure WritePort(PortAdress:word;Value:byte); pascal;
begin
asm
mov al,Value
mov dx,PortAdress
out dx,al
end;
end;

function ReadPort(PortAdress:word) : byte; pascal;
begin
asm
mov dx,PortAdress
in al,dx
mov @result,al
end;
end;
 
多人接受答案了。
 
请通知我.THANK
wzbhu@yeah.net
 
后退
顶部