Автор: Pavlo Zolotarenki 

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

Уточнить работу под современными осями.

Code:

 

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.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить