Afficher une chaine de caractere masm32

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 783 fois - Téléchargée 25 fois

Contenu du snippet

Bonjour a tous!
Ce petit bout de code affiche betement l'alphabet.
Pour les debutants,vous allez voir comment on manipulent les variables.
C'est un exemple trés simple....
Bonne Prog.

Source / Exemple :


.386

.model flat, stdcall

option casemap :none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib    
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
Chaine PROTO :DWORD

.data

.data?

table db 26 dup (?)

.code

start:

invoke Chaine,26
invoke MessageBox,0,ADDR table,ADDR table,MB_OK

invoke Chaine,10
invoke MessageBox,0,ADDR table,ADDR table,MB_OK

invoke ExitProcess,0

Chaine Proc NBLETTRE:DWORD

xor ebx,ebx
mov al,64
initialisation:
inc al
mov byte ptr[table+ebx],al
inc ebx
cmp ebx,NBLETTRE
jnz initialisation
mov byte ptr[table+ebx], 0
ret
Chaine endp

end start

A voir également

Ajouter un commentaire

Commentaires

BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
mov edx, offset table
mov al, 65
Lloop:
mov byte ptr[edx], al ; instruction + courte en taille
inc al
inc edx
cmp al, 90
jbe short Lloop
mov byte ptr[edx], 0 ; OBLIGATOIRE !!!
Vv20oX
Messages postés
8
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
8 mars 2004
-
Bonjour a tous!
il y a du code en trop ,c'est corrigé:
Juste pour afficher les lettres de l'aphabet:


xor ebx,ebx
mov al,64
initialisation:
inc al
mov byte ptr[table+ebx],al
inc ebx
cmp ebx,26
jnz initialisation

Conclusion:
Mon code marche trés bien,puisque je l'ai testé et en plus
je le pense trés fort.On ne peut me contredire sur une fonction qui
marche! ;)
mov byte ptr[edx], 0 <--- cette fonction n'est pas obligatoire
c'est juste pour ajouté une ligne en plus,comme une guirlande
en plus que l'on accroche a un sapin de noel.
Ou comme un enfant que l'on oublie d'enseigner la politesse..
La taille de la variable table est fait pour recevoir 26 "octet",ma
"Fonction" lui en donne aussi 26...Donc...
__Je n'ai pas tort et je n'ai pas raison__

Bon Coding.a+
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
mov byte ptr[edx], 0
n'est pas la pour ajouter une ligne, aucun rapport.
Ton code ne marche qu'1 SEULE fois, recommence sous le messagebox une boucle qui n'ecrirait que 10 octets pour tester.
Win32 attend des chaines de style C (terminateur NULL), ici tu l'as d'entree par init du segment data mais ne se produira pas ensuite.

Comme tu as 'raison' par decision unilaterale, j'eviterai donc de t'ennuyer avec code et/oui explications a l'avenir.
Vv20oX
Messages postés
8
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
8 mars 2004
-
Salut,Je vois ce que tu veux dire.Tu m'as mis sur le chemin de la
raison!
J'ai deja rencontré ce probleme pour generer un nom au hazard avec
une procedure..
Mais moi tant que le compilateur n'affiche pas d'erreur,c'bon,
Hors ce n'est surement pas comme ca que je vais m'ameliorer!
J'aurais du la mettre dans une procedure.
J'ai reglé le probleme maintenant regarde..

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.