Source d'un CheckSum en Delphi
function GetCheckSum (FileName : string) : DWORD; 
var 
  F : File of DWORD; 
  Fsize : DWORD; 
  Buffer : Array [0..500] of DWORD; 
  P : Pointer; 
begin 
  FileMode := 0; 
  AssignFile ( F , FileName); 
  Reset ( F ); 
  Seek ( F , FileSize ( F ) div 2); 
  Fsize := FileSize( F )-1-FilePos( F ); 
  if Fsize > 500 then Fsize := 500; 
  BlockRead ( F, Buffer, Fsize); 
  Close ( F ); 
  P:=@Buffer; 
   asm 
     xor eax, eax 
     xor ecx, ecx 
     mov edi , p 
     @again: 
       add eax, [edi + 4*ecx] 
       inc ecx 
       cmp ecx, fsize 
     jl @again 
     mov @result, eax 
   end; 
end;