; Calcule la somme "checksum" TCP/IP (16-bit carry-wrapping) du tampon ; commençant à ESI, de longueur ECX words. ; Retourne checksum dans AX. ; Les mots de poids fort de EAX, ECX, EDX, et ESI sont détruits. ; Tous les comptages de cycle impliquent le mode protégé 32 bits. ; Suppose que le tampon commence sur la limite d'un mot long ,que sa longueur ; est multiple d'un mots long et que sa longueur > 0. sub eax,eax ;initialise la checksum shr ecx,1 ;nous ferons deux mots par boucle mov edx,[esi] ;précharge le premier mots long add esi,4 ;pointe sur le prochain mots long dec ecx ;nous ferons 1 somme en dehors de la ; boucle jz short ckloopend ;il n'y a qu'1 somme à ;faire ckloop: add eax,edx ;pipeline U 1er cycle mov edx,[esi] ;pipeline V 1er cycle adc eax,0 ;pipeline U 2ème cycle add esi,4 ;pipeline V 2ème cycle dec ecx ;pipeline U 3ème cycle jnz ckloop ;pipeline V 3ème cycle ckloopend: add eax,edx ;somme du dernier mots long adc eax,0 mov edx,eax ;convertit la somme 32 bits shr edx,16 ;en somme 16 bits add ax,dx adc eax,0