begin process at 2012 05 24 02:56:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

c et asm

 > FONCTION INTTOBIN

FONCTION INTTOBIN


 Description

Cliquez pour voir la capture en taille normale
Appeler une fonction rédigée en assembleur dans un programme C++.
IntToBin convertie un nombre en une chaine contenant la représntation binaire de ce nombre (base 2).



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   exo1_bcc32
    • build.batTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 434 octets
    • Invite de commandes.lnkTélécharger ce fichier [Réservé aux membres club]1 495 octets
    • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier280 octets
    • main.ex_Télécharger ce fichier [Réservé aux membres club]113 152 octets
    • main.objTélécharger ce fichier [Réservé aux membres club]56 991 octets
    • main.tdsTélécharger ce fichier [Réservé aux membres club]458 752 octets
    • sub.asmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier714 octets
    • sub.OBJTélécharger ce fichier [Réservé aux membres club]817 octets

Télécharger le zip


 Sources de la même categorie

INTERFACE C ET ASM par parki
Source avec Zip MOT PALINDROME par Tinsalhi
EXECUTE /USR/BIN/ID par 0x0syscall
BIBLIOTHEQUE POUR LE 8086 par flory_
.:| CONVERSION D'UNE CHAINE EN MAJUSCULE |:. par fenkouch

Commentaires et avis

Commentaire de BruNews le 21/02/2011 09:23:44 administrateur CS

mov byte ptr[eax + ecx-1], '0'
shr edx, 1
adc byte ptr[eax + ecx-1], 0

NON !!! on ne réécrit pas 2 fois en mémoire le meme octet. Il y a des registres et il convient de s'en servir.
Quand on met une fonction en ASM c'est qu'on va faire mieux que le compilo C sinon on s'abstient.

Commentaire de patatalo le 02/04/2011 16:34:18 administrateur CS

salut,

Utilisation du registre ebx sans sauvegarde/restauration, c'est très dangereux.
Pas de sauvegarde/restauration du registre ecx avant et après le malloc, prions que la fonction ne le modifie pas.

IntToBin proc near
xor ecx,ecx
xor eax,eax
mov edx,[esp+4]
bsf ecx,edx ; ecx = index base zero du premier bit de poid fort à 1.
push ebx
je err ; si edx = 0 -> err
push edx
add ecx,2 ; ecx = n bits à allouer + 1 pour zero terminal
push ecx
call malloc
and eax,eax
pop ecx
pop edx
je err ; malloc retourne un pointeur NULL
mov [eax+ecx],0
dec ecx
@1:
xor bl,bl
shr edx,1
adc bl,'0'
mov [eax+ecx],bl
dec ecx
jns @1
err:
pop ebx
ret

@++

Commentaire de patatalo le 02/04/2011 16:41:30 administrateur CS

!!! remplacer jns @1 par jne @1

Commentaire de patatalo le 02/04/2011 16:47:38 administrateur CS

re zut,

IntToBin proc near
xor ecx,ecx
xor eax,eax
mov edx,[esp+4]
bsf ecx,edx ; ecx = index base zero du premier bit de poid fort à 1.
push ebx
je err ; si edx = 0 -> err
push edx
add ecx,2 ; ecx = n bits à allouer + 1 pour zero terminal
push ecx
call malloc
and eax,eax
pop ecx
pop edx
je err ; malloc retourne un pointeur NULL
dec ecx; retour sur index
mov [eax+ecx],0
dec ecx
@1:
xor bl,bl
shr edx,1
adc bl,'0'
mov [eax+ecx],bl
dec ecx
jns @1
err:
pop ebx
ret

Commentaire de patatalo le 02/04/2011 16:55:09 administrateur CS

utiliser bsr et pas bsf sinon, on obtient le premier bit de poids faible à 1.

Commentaire de patatalo le 02/04/2011 17:49:51 administrateur CS

C'est encore améliorable, par exemple, en permutant edx et ebx dans leur utilisation.

J'aurais bien retourné un pointeur vers "0",0 si l'entier = 0 sinon, pas de différence entre cette erreur et une erreur de malloc(). C'est embêtant...

@++

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,246 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales