[LMI] TD4: entierBinToStr

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LMI] TD4: entierBinToStr

Message  Gustavo le Ven 02 Mai 2008, 08:58

Bonjour,

Je ne pas sûr de comprendre la question il nous est demandé de faire la procédure entierBinToStr

énnoncé a écrit:6. Écrivez une procédure entierBinToStr qui transforme un entier stocké dans un double mot
en une chaîne de caractères terminée par un zéro binaire. Testez votre procédure avec un
programme testEBTS qui appelle entierBinToStr et afficher comme procédures
externes. La fonction entierBinToStr a comme arguments :
a) la valeur du nombre à transformer ;
b) la manière d'interpréter le motif binaire du nombre à transformer : 0 pour un nombre non
signé, 1 pour un nombre signé ;
c) l'adresse de la chaîne de caractères où stocker le résultat de la conversion.
Elle représente toujours l'entier en base 10. Aucune validation relative à la longueur de la chaîne
fournie ne peut être réalisée par entierBinToStr. Veillez donc à ce que cette chaîne soit
suffisamment grande lors de son test (et de ses utilisations ultérieures).

Je pense bien avoir compris qu'on reçois une valeur entière (de base 10?) et qu'il faut la transfomer en chaine de caractère pour ensuite renvoyer l'adresse de cette chaine.

Par contre je necomprend pas bien l'histoire avec le motif binaire et puis, signé, non signé, c'est un peu embrumé dans mon esprit là silent
et je je coince un peu aussi avec l'histoire trous sur la pile pour le variable locales... en fait qu'il commence à y avoir quelques donnée a traiter et qu'il faut sur la pile je finis pas plus savoir ou je me trouve pale donc si quelqu'un pouvais m'aider ou me donner quelques conseils je lui serait reconnnaissant.

merci

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Wark le Ven 02 Mai 2008, 11:00

Fais un dessin qui te représente la pile. Smile

Le motif binaire, tu reçois en paramètre (je ne sais plus si c'est dans un registre ou non), si tu dois traiter le nombre reçu de manière signée ou non. Dans le premier cas, tous les nombres >= 80 seront négatifs (par exemple et pour les chiffres à 2 nombres). Dans l'autre cas, ils seront tous positifs.

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Gustavo le Ven 02 Mai 2008, 11:08

ok merci,

et donc dans le cas où je reçois un nombre negatif, je rajoute un "-" en début de chaine ?

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Wark le Ven 02 Mai 2008, 11:15

Il faut voir si, pour les profs, négatif signifie juste rajouter un - (exemple : F => -15 sur 1 byte si on rajoute juste le -, F => -1 en réalité sur un byte )

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Wilbur le Ven 02 Mai 2008, 12:05

Bonjour,

je suppose que Wark a répondu à ta question Gustavo, je me permets donc d'exposer mon petit soucis:

Ayant terminé d'écrire le code de cet exercice, j'allais compilé et faire l'édition de lien, comme d'habitude. Mais (!), à l'édition de lien de testEBTS, j'ai droit à ça :

Code:
testEBTS.o: In function `main':
testEBTS.asm:(.code+0x11): undefined reference to `entierBinToStr'
testEBTS.asm:(.code+0x1b): undefined reference to `afficher'

J'ai pourtant bien dans mon dossier, entierBinToStr.o ainsi que afficher.o, et j'utilise les commandes :

Code:
nasm testEBTS.asm -o testEBTS.o -f elf
ld -m elf_i386 testEBTS.o entierBinToStr.o afficher.o -o testEBTS -e main

Bien sur, dans testEBTS.asm , il y a ça :

Code:
[...]
extern entierBinToStr
extern afficher
[...]
call entierBinToStr
[...]
call afficher
[...]

Je tiens à préciser que afficher.o est une procédure qui nous a été donnée par notre professeur, et qu'elle fonctionne parfaitement dans un autre code.

La solution est peut-être devant mon nez, mais je ne parviens pas à la saisir... Si quelqu'un avait une petite idée d'où se situe le problème...

Merci.

Au plaisir.

Wilbur

Nombre de messages : 46
Age : 27
Prénom : Romain
Statut : Etudiant 2ème Réseaux
Date d'inscription : 20/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Gustavo le Ven 02 Mai 2008, 12:21

Lors de l'edition de liens, tu indiques bien toute les procédures ?

Code:
ld testEBTS.o entierBinToStr.o afficher.o -o testEBTS

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  nvs le Ven 02 Mai 2008, 12:46

as-tu rendu les fonctions entierBinToStr et afficher publiques en ajoutant
Code:
GLOBAL entierBinToStr
et
Code:
GLOBAL afficher
dans leur source respectif ?









_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

[LMIC] entierBinToString

Message  john le Ven 02 Mai 2008, 14:04

bounjour à tous,

je vois que vous avancez vite avec le td4, est-ce que quequ'un entre vous pourrait m'expliquer comment transformer un entier dans un String?, j'avais pensé d'utiliser le code ascii mais je pense que ça ne doit pas être comme ça:no:

merci:bounce:

john

Nombre de messages : 64
Prénom : john
Statut : 2ème Reseaux
Date d'inscription : 25/11/2007

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Gustavo le Ven 02 Mai 2008, 14:12

john a écrit:bounjour à tous,

je vois que vous avancez vite avec le td4, est-ce que quequ'un entre vous pourrait m'expliquer comment transformer un entier dans un String?, j'avais pensé d'utiliser le code ascii mais je pense que ça ne doit pas être comme ça:no:

merci:bounce:

Ben si c'est bien le code ascii que tu dois utiliser.

Plus concrètement tu dois isoler chaque chiffre du nombre et lui ajouter 48 pour obtenir la code ascii du chiffre. En ensuite te le reconstitue.

Personellement je trouve ça assez lourd à faire, sans qu'on puisse utiliser de variable globale Sad , parce que tout faire dans la pile et dans les registres, j'ai beaucoup de mal à visualiser scratch

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  nvs le Ven 02 Mai 2008, 14:21

étant donné que vous possédez les sources de printw et printd, je ne comprends pas trop vos questionnements / lamentations Wink












_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Wilbur le Ven 02 Mai 2008, 14:34

nvs a écrit:as-tu rendu les fonctions entierBinToStr et afficher publiques en ajoutant
Code:
GLOBAL entierBinToStr
et
Code:
GLOBAL afficher
dans leur source respectif ?










De fait, mes points d'entrées étaient érronés...

Merci beaucoup.

Au plaisir.

Wilbur

Nombre de messages : 46
Age : 27
Prénom : Romain
Statut : Etudiant 2ème Réseaux
Date d'inscription : 20/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Gustavo le Ven 02 Mai 2008, 15:37

nvs a écrit:étant donné que vous possédez les sources de printw et printd, je ne comprends pas trop vos questionnements / lamentations Wink
sauf que dans printw et printd il y a utilisation de variables globales scratch

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Wilbur le Ven 02 Mai 2008, 17:28

Néanmoins, je crois qu'elles sont autorisées dans ces circonstances...

J'aurais voulu savoir si

Code:
Exception en point flottant

pouvait être causé par la division d'un grand nombre par un petit? Suspect


Edit: après plusieurs autres tests, il apparait que ce n'est pas la division d'un grand nombre par un petit qui est à l'origine de cette erreur...

Wilbur

Nombre de messages : 46
Age : 27
Prénom : Romain
Statut : Etudiant 2ème Réseaux
Date d'inscription : 20/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  nvs le Ven 02 Mai 2008, 17:42

Gustavo a écrit:
nvs a écrit:étant donné que vous possédez les sources de printw et printd, je ne comprends pas trop vos questionnements / lamentations Wink
sauf que dans printw et printd il y a utilisation de variables globales scratch
en effet, il ne faut pas juste remplacer la sortie (toujours standard) utilisée par ces fonctions (d'où un paramètre en entrée en plus), il faut aussi transformer les variables globales en locales (d'où également un paramètre en sortie en plus pour la chaîne résultat). en gros un quart d'heure de travail si on s'y prend avec méthode et un petit dessin de l'état de la pile Smile






_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  nvs le Ven 02 Mai 2008, 17:44

Wilbur a écrit:Néanmoins, je crois qu'elles sont autorisées dans ces circonstances...

J'aurais voulu savoir si

Code:
Exception en point flottant

pouvait être causé par la division d'un grand nombre par un petit? Suspect


Edit: après plusieurs autres tests, il apparait que ce n'est pas la division d'un grand nombre par un petit qui est à l'origine de cette erreur...
les seuls cas où j'ai observé cette erreur, c'était dans le cas de la division d'un grand nombre par un petit. je ne peux donc t'aiguiller sur une autre piste et suis très curieux de connaître l'origine du problème que tu rencontres Smile






_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Wilbur le Ven 02 Mai 2008, 17:54

Et bien, j'avais une division d'un très grand nombre par un petit, cette ligne causait problème...

Je n'ai plus l'erreur une fois que je rajoute:

Code:
mov edx,0

juste avant la ligne de la division...

Wilbur

Nombre de messages : 46
Age : 27
Prénom : Romain
Statut : Etudiant 2ème Réseaux
Date d'inscription : 20/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  pbt le Ven 02 Mai 2008, 18:39

nvs a écrit:étant donné que vous possédez les sources de printw et printd, je ne comprends pas trop vos questionnements / lamentations Wink

Je me demande également s'il n'y a pas un prof qui a proposé une solution du TD3 avec une conversion d'un nombre vers une chaine de caractères ....




_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Wark le Ven 02 Mai 2008, 18:45

PbT a écrit:
nvs a écrit:étant donné que vous possédez les sources de printw et printd, je ne comprends pas trop vos questionnements / lamentations Wink

Je me demande également s'il n'y a pas un prof qui a proposé une solution du TD3 avec une conversion d'un nombre vers une chaine de caractères ....




En êtes-vous sûr ? Il me semble que non moi ! Razz Laughing

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  nvs le Ven 02 Mai 2008, 19:25

PbT a écrit:
nvs a écrit:étant donné que vous possédez les sources de printw et printd, je ne comprends pas trop vos questionnements / lamentations Wink

Je me demande également s'il n'y a pas un prof qui a proposé une solution du TD3 avec une conversion d'un nombre vers une chaine de caractères ....



tiens tiens... affaire à suivre Wink







_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] TD4: entierBinToStr

Message  Contenu sponsorisé Aujourd'hui à 14:45


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum