Как читать/писать в I/O порты?

Материал из DRKB

Как читать/писать в I/O порты?[править | править код]

В Delphi 1 записывать и считывать из портов можно через глобальный массив 'ports'. Однако данная возможность отсутствует в '32-битном' Delphi.

Следующие две функции можно использовать в любой версии delphi:


function InPort(PortAddr:word): byte; 
{$IFDEF WIN32} 
assembler; stdcall; 
asm 
        mov dx,PortAddr 
        in al,dx 
end; 
{$ELSE} 
begin 
  Result := Port[PortAddr]; 
end; 
{$ENDIF} 

procedure OutPort(PortAddr:   
          word; Databyte: byte); 
{$IFDEF WIN32} 
assembler; stdcall; 
asm 
   mov al,Databyte 
   mov dx,PortAddr 
   out dx,al 
end; 
{$ELSE} 
begin 
  Port[PortAddr] := DataByte; 
end; 
{$ENDIF}


Source: Взято из http://forum.sources.ru
ID: 01339