Les Snippets

Connexion

Conversion unités/octets

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 30/07/2006 05:40:33 et initié par PCPT [Liste]
Date de mise à jour : 30/07/2006 05:51:42
Vue : 9416
Catégorie(s) : Trucs & Astuces
Langage sélectionné : Assembleur x86
Langages dispo pour ce code :
- VB6, VBA
- Assembleur x86
- Voir tous les langages pour ce code snippet



Langage : Assembleur x86
Date ajout : 31/07/2006
Posté par _dune2_ [Liste]
;// 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 ...
 

Remarque :
Les indexes d'unités sont repris du tableau de 'Coke Hax' pour conserver l'esprit.
L'utilisation d'indexes en multiple de 10 simplifierai grandement le code puisque la multiplication disparaitrait (suppression de "mov $10,%eax;" jusqu'à "cmp $0,%ecx;" inclus).

Snippets en rapport avec : Taille, Conversion, Octets



Codes sources en rapport avec : Taille, Conversion, Octets

{Visual Basic, VB6, VB.NET, VB 2005} TRADUCTEUR VB6.VBP EN VB5.VBP
Ben oui ! Il y a encore des utilisateurs de VB5. C'est ce qui m'a amené à faire ce petit programm...

{Visual Basic, VB6, VB.NET, VB 2005} TAILLE D'UN LECTEUR OU D'UN REPERTOIRE EN OCTETS
Ces lignes de code permetent de retourner la taille(en octet) d'un lecteur logique,ou d'un répertoir...

{Graphisme} EXPORT DE FICHIER AUTOCAD VERS WMF ET DXF (EN LOT)
Ayant besoin d'exporter une bonne quantité de dessins dans différents formats, j'ai fait ce petit bo...

{C / C++ / C++.NET} DVD2AVI2 ---- ENCODAGE FICHIERS : VOB VERS AVI
Transformation de fichiers VOB vers AVI démuxage(séparation) du son vers WAV ou AC3 ou mpeg1 audio ...

{Javascript / DHTML} CONVERSION TEXTE ACCENTUÉ -> CODE HTML
Etant donné que je n'ai pas trouvé de code qui permettait de me générer un code HTML à partir d'un t...

{Visual Basic, VB6, VB.NET, VB 2005} CONVERTISSEUR DEVISES ACTUALISÉ
Ce code permet de convertir les principales devises entres elles (Eur, USD, Yen, CHF, GBP) C'est ...

{IRC} AMICODER CONVERSION AUDIO V1.0
Cet addon vous permet de convertir differents formats audio dans d'autres formats. Il transfert éga...

{PHP} POO - GESTION DES COULEURS
Cette source fait suite à ma librairie sur la gestion des couleurs. Ce package est composé de 4 cla...

{PHP} OBJECT 2 JSON
Si vous ne conaissez pas json, mais qu'ajax vous tient a coeur, vous DEVEZ vous y interesser :) j...

{Visual Basic, VB6, VB.NET, VB 2005} CALC'BOOL LA CALCULETTE BOOLÉENNE
Un calculette booléenne avec module de conversion Décimal-Hexa-Binaire. Pour les conversions il suf...