Работа с портами микропроцессора

Previous  Top  Next

    
 

 

 

Автор: Pavlo Zolotarenki 

 

Модуль для работы с портами микропроцессора с сохранением синтаксиса.

Работает под Win9x.

НЕ работает под WinNT.

Code:

//Copyright(c) 1998 Zolotarenko P.V pvz@mail.univ.kiev.ua

 

unit Ports;

interface

type

 

TPort = class

private

   procedure Set_(index_: word; value: byte); register;

   function Get_(index_: word): byte; register;

public

   property Element[index_: word]: byte read Get_ write Set_; default;

end;

 

TPortW = class

private

   procedure Set_(index_: word; value: Word); register;

   function Get_(index_: word): word; register;

public

   property Element[index_: word]: word read Get_ write Set_; default;

end;

 

var

Port: TPort;

PortW: TportW;

 

implementation

 

procedure TPort.Set_(index_: word; value: byte);

begin

asm

   mov dx,index_

   mov al,value

   out dx,al

end;

end;

 

function TPort.Get_(index_: word): byte;

begin

asm

   mov dx,index_

   in al,dx

   mov @Result,al

end;

end;

 

procedure TPortW.Set_(index_: word; value: word);

begin

asm

   mov dx,index_

   mov ax,value

   out dx,ax

end;

end;

 

function TPortW.Get_(index_: word): word;

begin

asm

   mov dx,index_

   in ax,dx

   mov @Result,ax

end;

end;

 

initialization

Port := TPort.Create;

PortW := TPortW.Create;

finalization

Port.free;

PortW.free;

end.

 

 

 

©Drkb::01435

       

Взято с http://delphiworld.narod.ru