热情软件屋

 

在Delphi中直接对I/O端口进行操作


编号:QA000848
建立日期: 1999年4月22日 最后修改日期:2000年11月16日
所属类别:

张荣斌:
    Delphi 3.0
    PWindows 98
    怎样在DELPHI 3.0 中直接对I/O端口进行操作,是否存在这样的控件?
    

回答:

    用这样的函数:
    //-----------------------------------------
    function PortIn( PortNum: word): byte;
    //-----------------------------------------
    Var a : byte;
    Begin
     asm
     mov DX, PortNum;
     in AL, DX;
     mov a, AL;
     end; {asm}
     PortIn := a;
    end;
    
    //-----------------------------------------
    procedure PortOut( PortNum: word; a: byte);
    //-----------------------------------------
    Begin
     asm
     mov DX, PortNum;
     mov AL, a;
     out DX, AL;
     end; {asm}
    end;
    
    //-----------------------------------------
    function PortInW( PortNum: word): word;
    //-----------------------------------------
    Var a : word;
    Begin
     asm
     mov DX, PortNum;
     in AX, DX;
     mov a, AX;
     end; {asm}
     PortInW := a;
    end;
    
    //-----------------------------------------
    procedure PortOutW( PortNum: word; a: word);
    //-----------------------------------------
    Begin
     asm
     mov DX, PortNum;
     mov AX, a;
     out DX, AX;
     end; {asm}
    end;
    
    //-----------------------------------------
    function PortInL( PortNum: word): longint;
    //-----------------------------------------
    Var a : longint;
    Begin
     asm
     mov DX, PortNum;
     in EAX, DX;
     mov a, EAX;
     end; {asm}
     PortInL := a;
    end;
    
    //-----------------------------------------
    procedure PortOutL( PortNum: word; a: longint);
    //-----------------------------------------
    Begin
     asm
     mov DX, PortNum;
     mov EAX, a;
     out DX, EAX;
     end; {asm}
    end;
    此方法只适用于Win9x,如果想用于WinNT,参考QA001296 "如何在WindowsNT/2000下用VB6写硬件IO控制"
    songyoung的意见:
    该方法对某些端口的操作不能成功(如对ide端口(1f0-1f7)),所以在win95下访问端口最好还是写vxd程序。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio