Conversion unités/octets


Contenu du snippet

;// 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 ...
 


Compatibilité : Assembleur x86

Disponible dans d'autres langages :

A voir également

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.