Работа с портами микропроцессора
Пришло мне письмо от Pavlo Zolotarenki, где он пишет:
Модуль для работы с портами микропроцессора с сохранением синтаксиса.
Работает под Win9x.
НЕ работает под WinNT.
//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.
|