;// Tableau repris de 'Coke Hax': ;//Nom |o | Ko | Mo | Go | To | Po | Eo | Zo | Yo ;// |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ;//Position |0 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 .section .data pos_depart: .long 1; // position d'unité de départ pos_finale: .long 3; // position d'unité final valeur: .long 1024*1024*25; // valeur à convertir .section .text unit: mov pos_depart,%ecx; // charge position finale dans ECX sub pos_finale,%ecx; // calcul la différence d'exposant (depart-finale) dans ECX mov $10,%eax; // ajustement en produits de *2^10 (*1024) mul %ecx; // -> *2^10 mov %eax,%ecx; // on remet le resultat dans ECX pour faire des décalages de bits cmp $0,%ecx; // le resultat de mul et de mov ne permettent pas tester SF. jl diviser; // si c'est négatif, il faut diviser par un multiple de 2 multiplier: // si c'est positif, il faut multplier par un multiple de 2 sall %cl,valeur; // on multiplie EDX par 2^CL (CL=LSB de ECX ce qui largement suffisant) jmp fin; // on saute la division diviser: // neg %ecx; // on ramene ECX positif sarl %cl,valeur; // on divise EDX par 2^CL (CL=LSB de ECX ce qui largement suffisant) fin: // Fin du programme, EDX contient le résultat ...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.