Procedure TForm1.Escribepuerto(Direccion:Word;Valor:byte);
var
lbvalor : byte ;
begin
lbvalor := byte(valor);
asm {Empieza codigo en ensamblador}
push dx {graba el contenido del registro en DX}
mov dx,direccion {Grava el valor en el puerto}
mov al,lbvalor
out dx,al
pop dx {regresa el valor inicial al puerto}
end;
end;
Function TForm1.leepuerto(direccion:word):byte;
var
lbvalor:byte;
begin
asm {inicia codigo ensamblador}
push dx {conserva el valor del registro en dx}
mov dx,direccion {lee el valor que tiene el puerto}
in al,dx
mov lbvalor,al
pop dx {restaura el contenido de dx}
end;
leepuerto := byte(lbvalor) and $00FF;
end;