Я в этой теме плохо разбираюсь, так что правильность нижеприведенного файла не гарантирую. Смотри, что написано на 2 странице.
XshStasX CCITT, если не ошибаюсь. Это вообще самый стандартный из CRC16. http://ru.wikipedia.org/wiki/CRC16#CRC-16
Вот намедни написал реализацию CRC-16 CCITT если кому надо ... не комментил ибо и так всё просто Код (Text): var CRCTable: array [0..255] of word; ... procedure MakeCRCTable(Poly: word; Table: pointer); asm pushad mov EDI, Table xor ECX, ECX @repeat: push ECX xor EBX, EBX mov BH, CL mov CX, 8 @8b: shl BX, 1 jnc @no_top_bit xor BX, Poly @no_top_bit: sub CX, 1 jnz @8b pop ECX mov [EDI], BX add EDI, 2 add ECX, 1 test ECX, 256 jz @repeat popad end; function CRC16(Init: word; Data: pointer; Size: dword):word; var crc: word; begin MakeCRCTable($1021, @CRCTable); asm push ESI push EDI push ECX lea EDI, CRCTable mov ESI, Data mov ECX, Size mov AX, Init xor EDX, EDX @repeat: movzx EDX, AH shl AX, 8 xor DL, [ESI] xor AX, word ptr [EDI+EDX*2] add ESI, 1 sub ECX, 1 jnz @repeat mov crc, AX pop ECX pop EDI pop ESI end; result:=crc; end;