Ce code n'arrive pas a mettre la valeur Eax/256 dans "Re" :
Code : Tout sélectionner
!MOV dword Ecx,[a_noeud]
!ADD dword Ecx,[v_u]
!push Ecx
!MOV Eax,[Ecx]
!MOV dword Edx,[v_np]
!MUL Edx
!MOV dword Ecx,[v_re]
!ADD Eax, Ecx
!POP Ecx
!MOV byte [Ecx],Al
!SAR Eax,8
!MOV dword [v_re],Eax
Ce code fonctionne mais il pose un probleme de lenteur avec la partie "si xx<0 alors on fait xx+256" tandis qu'en assembleur, je "MUL" sans m'occuper du signe. Et ce code a aussi un bleme d'overflow car XX(max 255)*NP(je ne peux pas aller a plus de 8 millions)+RE me limite !
Ce code est celui ci et il fonctionne :
Code : Tout sélectionner
xx=noeud(u)
If xx<0
xx+256
EndIf
xx*np+re
If xx>255
re=xx/256
xx-re*256
Else
re=0
EndIf
noeud(u)=xx