{;*****************************************************************************
;在F000段查找指定的字符串(本例子中是'DMI')				     *
;                                             By Z&Z                         *
;                                                  April 5th  2004           *
;*****************************************************************************}
program FindStr;
var
  pp :PChar;
  i  :Longint;

function TestPChar(Dest:PChar;Sour:String):Boolean;	{比较Dest和Sour两个字符串是否相等}
var
  j:integer;
begin
  for j:=0 to Length(Sour)-1 do				{Dest[0]是第一个字符,Sour[1]是第一个字符}
    begin
      if Dest[j]<>Sour[j+1] then			
        begin
          TestPChar:=False;				{不同,退出}
          Exit;
        end;
    end;
  TestPChar:=True;
end;

begin
  i:=0; pp:=nil;
  while (TestPChar(pp,'DMI')=false) and (i<$FFFF) do	{如果不同并且没有超过F000:FFFF继续}
   begin
     i:=i+1;
     pp:=Ptr($F000,i);					{ptr(Seg,Ofs) 合成一个地址}
   end;
  if TestPChar(pp,'DMI')=true then
                       begin
                         writeln('Found!');
                       end
  else write('No');					
end.
