Accueil > Forum > > > > affichage chaine de caractere
affichage chaine de caractere
lundi 1 janvier 2007 à 13:03:46 |
affichage chaine de caractere

Le cancre
|
Bonjour à tous et bonne année je bataille depuis 2jours à afficher correctement une variable de type string sous masm32,c'est la misère ^^ voici ma structure .data ? IP struct Nom db ? Prenom db ? IP ends eIP IP<> .data Ph1 db "ValeurNom",0 ..... je rempli ma structure eip.nom mov ah,Ph1 mov eIP.Nom,ah ..si j'utilise un messagebox, j'vois que le premier caractère,comment faire pour afficher tout les caractères ? j'ai utilisé une autre méthode lea ebx, Ph1 mov dh,[ebx] mov eIP.Nom,dh si je fais ebx+1, j'affiche le deuxieme caractère mais aucun moyen d'afficher entierement le contenu de ma variable merci d'avance pour votre réponse
|
|
lundi 1 janvier 2007 à 15:34:06 |
Re : affichage chaine de caractere

Le cancre
|
j'ai trouver la solution à mon problème
.data ? IP struct Nom dd ? <---- j'ai remplacé db par dd Prenom dd ? IP ends eIP IP<>
.data Ph1 db "Nom",0 Ph2 db "Prenom",0
lea ebx, Ph1 mov eax,dword ptr[ebx] mov eIP.Nom,eax
xor eax,eax
lea ebx,Ph2 mov eax,dword ptr[ebx] mov eIP.Prenom,eax invoke MessageBox,0,offset eIP.Nom,offset eIP.Prenom,MB_OK
le problème maintenant c'est que j'ai dans eIP.Nom = "NomPre" et dans eIP.Prenom = "Pren"
|
|
lundi 1 janvier 2007 à 18:51:47 |
Re : affichage chaine de caractere

Le cancre
|
Réponse acceptée !
bon voila, ma ptite prise de tete est finie voici ma solution d'un code qui permet de remplir une structure et d'afficher chaque élément de cette structure (masm32)
.data ? IP struct Nom dd,'$' ? Prenom dd,'$' ? IP ends eIP IP<>
.data Ph1 db "Nom",0 Ph2 db "Prenom",0
..... mov esi, offset Ph1 mov ecx,sizeof Ph1 mov edi, offset eIP.Nom rep movsb
mov esi, offset Ph2 mov ecx,sizeof Ph2 mov edi, offset eIP.Prenom rep movsb
invoke MessageBox,0,offset eIP.Nom,offset eIP.Prenom,MB_OK
|
|
mardi 2 janvier 2007 à 00:54:39 |
Re : affichage chaine de caractere

BruNews
|
Réponse acceptée !
EIP est un registre, évite ce mnemonic dans les noms persos, même en variant minusc majusc c'est source d'erreur un jour ou l'autre.
Evite "rep movsb" et autres instructions obsolètes de ce genre, ça oblige à PUSH POP edi et esi, de plus c'est fort lent rapport à une simple boucle sur les 3 registres généraux qui n'aura rien à sauvegarder en prime.
mov edx, offset dest mov ecx, offset src sub edx, 1
cpySTR: add edx, 1 mov al, [ecx] mov [edx], al add ecx, 1 test al, al jne short cpySTR
ciao... BruNews, MVP VC++
|
|
mardi 2 janvier 2007 à 13:07:42 |
Re : affichage chaine de caractere

Le cancre
|
Salut, et merci d'avoir répondu je débute en asm depuis 2semaines à peine, dans ton exemple il y'a quelque truc que je comprend pas car on nous apprend que le registre esi et edi c'est pour travailler avec les chaines.
mov edx, offset dest <-- pourquoi edx au lieu de edi mov ecx, offset src <-- pourquoi ecx au lieu de esi sub edx, 1 <-- pourquoi tu sub au lieu de Dec cpySTR: add edx, 1 <-- pourquoi tu l'incrémente pas par inc edx ? mov al, [ecx] mov [edx], al add ecx, 1<-- idem pour inc ecx test al, al jne short cpySTR
c'est surement pour une question d'optimisation,les registres généraux sont plus rapide que les registres d'offset/pointeur? je m'avance pas trop dans cette conclusion...
dans ton exemple j'ai fais une petite modification mov edx, offset dest -1 mov ecx, offset src
cpySTR: inc edx mov al, [ecx] mov [edx], al inc ecx test al, al jne short cpySTR
|
|
mardi 2 janvier 2007 à 18:08:55 |
Re : affichage chaine de caractere

BruNews
|
hormis EAX, tous les registres ont les mêmes temps d'accès. L'emploi de EAX, ECX ou EDX en place de EDI-ESI est pour éviter d'avoir à les sauvegarder et restituer, ce qui absolument obligatoire sinon injurebox system.
add REG, 1 permet un meilleur alignemnt des instructions.
ciao... BruNews, MVP VC++
|
|
mardi 2 janvier 2007 à 18:27:38 |
Re : affichage chaine de caractere

Le cancre
|
impéccable, merci pour tes explications.....++
|
|
Cette discussion est classée dans : afficher, db, ip, mov, eip
Répondre à ce message
Sujets en rapport avec ce message
Simple addition [ par nostra ]
Big totoJe n'arrive pas à afficher les valeurs A (=3) et B(=2) ainsi que le résultat de l'addition. Merci de trouver le ou les erreurs commises.;-----
Addition pourtant simple [ par nostra ]
Big totoJe n'arrive pas à afficher le résultat de l'addition malgré les remarques de Nemesis. Merci de trouver le ou les erreurs commises. ;----------
Peut on comparer deux binaire avec cmp ? [ par MrNice ]
Lo le forum me revoila ave cun new prob...donc en fait g une table de variable, je prends al=0 je fait un xlat et je compare ce resultat avec une entr
afficher un pixel [ par oclone ]
hello, j'aimerais faire une librairie graphique en c++ mais pour cela il faut deja que je puisse afficher un point, j'ai pensé que la meilleur solutio
Afficher l'heure avec la memoire video [ par RootASM ]
Bonjour,Je voudrais afficher l'heure grace à la mémoire vidéo car elle permet d'économiser une interuption.Quand je le lance sous afd, j'ai bien dans
Aide affighage chiffre asm 8086 [ par MayouMX ]
Bonjour a tous, je dois programmer un pong en assembleur et la je butte pour l'affichage des scores.J'ai créer un segment qui ressemble a ca :exemple
afficher un caractère avec int 10h [ par thicdorb ]
bonjour à tous,je suis débutant en assembleur et je commence par le début : afficher un caractèrej'utilise l'inteeruption BIOS 10h mov al, 'A'
Petit problème pour comparer (cmp) [ par smok1360 ]
Bonjour à tous,Pour commencer, j'espère de ne pas avoir choisis le mauvais lieu pour poster, j'ai un petit peu hésité Donc, j'ai décidé d'apprendre l'
assembleur/ patronyme [ par maxverypainful ]
Bonjour, je suis nouveau en tant qu'étudiant en informatique de gestion et j'ai une question concernant un code que nous devons créer.Il a pour but de
probleme d'affichage d'une soustraction [ par calimerros ]
[u]Bonjour à tous et à toutes.[/u] Voici un programme que je réalise et je bloque au niveau de l'affichage d'une soustraction (SUB). Pour moi mon pr
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|