Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : mon programme bloque [ Archives / Newbii ] (rhumsek)

jeudi 12 août 2004 à 22:57:48 | mon programme bloque

rhumsek

slt j'ai améliore mon programme mais il provoque une erreure lors
du calcul de la somme des entiers saisi (sommeentier)
POURTANT il exécute bien les deux premieres procédure
il bloque à partir de sommeentier
pourquoi????


TITLE affichage de texte en quatre couleur
.386
.MODEL flat,stdcall
.STACK 4096
ExitProcess PROTO,dwExitCode:DWORD
DumpRegs PROTO

INCLUDE Irvine32.inc

intcount=3

.data
intval SDWORD intcount DUP(?)
mess BYTE "Saisissez un entier sign",82h," :",0
mess1 BYTE "voici les entiers saisient dans la pile",0
mess2 BYTE "voici la somme des entiers dans la pile",0
.code
main PROC

call clrscr
mov esi,OFFSET intval
mov ecx,intcount
call saisirentiers
mov eax,1000
call delay
call afficherentiers
mov eax,2000
call delay
call sommeentier
mov eax,1000
call delay
call affichsomme
exit
main ENDP


saisirentiers PROC

pushad

L1:
mov edx,OFFSET mess
call writestring
call crlf
call readint
call crlf
mov dh,10
mov dl,20
call gotoxy
call clrscr
mov [esi],eax
add esi,4
loop L1
popad
ret

saisirentiers ENDP

afficherentiers PROC

call clrscr
mov edx,OFFSET mess1
call writestring
call crlf

L1:
mov eax,[esi]
call writeint
add esi,4
call crlf
loop L1
ret

afficherentiers ENDP

sommeentier PROC

push esi
push ecx
mov eax,0

L1:
add eax,[esi]
add esi,4
loop L1
L2:
pop ecx
pop esi
ret

sommeentier ENDP

affichsomme PROC

push edx
mov edx,OFFSET mess2
call writestring
call writeint
call crlf
pop edx
ret

affichsomme ENDP

END main

rhumsek

vendredi 13 août 2004 à 11:13:12 | Re : mon programme bloque

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

verifie la valeur de ecx a l'entrée de la fonction.

@++

vendredi 13 août 2004 à 14:08:30 | Re : mon programme bloque

AlexMAN

Membre Club
sommeentier PROC

push esi
push ecx
mov eax,0

L1:
add eax,[esi]
add esi,4
loop L1
L2:
pop ecx
pop esi
ret

sommeentier ENDP

jla trouve bizarre ta fonction ,aucune condition, rien, jme demande mm si elle ne fait pas une boucle infinie, et puis jne vois pas les 2 operandes, ou sont ils ? enfin, tu peux faire plus simple je pense, regarde :

;renvoie resultat
sommeentier proc ;op1 [esp + 4], op2 [esp + 8]

mov eax, [esp + 4]
mov ebx, [esp + 8]

add eax, ebx

ret 8

sommeentier ENDP

Pas besoin de sauver les registres généraux, comme eax, ecx ou edx.
Dis moi si cette fonction ne marche po, mais apparemment elle devrait.

++



vendredi 13 août 2004 à 15:47:34 | Re : mon programme bloque

vecchio56

Administrateur CodeS-SourceS
AlexMAN: loop EST une condition (jmp if ecx != 0), et provoque la décrémentation de ecx a chaque passage

vendredi 13 août 2004 à 15:58:34 | Re : mon programme bloque

patatalo

Membre Club Administrateur CodeS-SourceS

re,

as-tu verifié la valeur de ecx qui a mon avis a du bouger.

encore + simple:

sommeentier proc ;op1 [esp + 4], op2 [esp + 8]
mov eax, [esp + 4]
add eax, [esp + 8]
ret 8

sinon, il faudrait pusher ebx.

mais ça ne colle pas car nous avons affaire a un tableau d'entier.
La methode est bonne mais a mon avis, ecx n'as pas la valeur qu'il devrait avoir.

essai ça:

main PROC

call clrscr
mov esi,OFFSET intval
mov ecx,intcount
call saisirentiers
mov eax,1000
call delay
call afficherentiers
mov eax,2000
call delay
mov ecx,intcount <- juste ça
call sommeentier
mov eax,1000
call delay
call affichsomme
exit
main ENDP


@++

vendredi 13 août 2004 à 16:44:47 | Re : mon programme bloque

AlexMAN

Membre Club
ah ok, dsl je parle trop vite ;)

vendredi 13 août 2004 à 17:40:04 | Re : mon programme bloque

BruNews

Administrateur CodeS-SourceS
AlexMAN> surtout tu retiens 'loop' comme bouclage OBSOLETE.
Me semble lui avoir deja dit que ce bouquin n'a que des vieilleries en exemples.

ciao...
BruNews, Admin CS, MVP Visual C++

vendredi 13 août 2004 à 17:48:31 | Re : mon programme bloque

AlexMAN

Membre Club
Ah c pour ca ke je connais pas, je ne connais que le top nivo moi ;)



Cette discussion est classé dans : mov, call, l1, eax, esi


Répondre à ce message

Sujets en rapport avec ce message

HELP ! :'( [ par TheHacker ] Salut j'ai un probleme: voici mon code, il fonctionne correctement, activer le programme vous verres qu'a la fin i laffiche un MessageBox avec marqué BeginPaint code débutant [ par TRAX44 ] Bonjour, le problème est tout simple je comprends absolument pas ce qui marche pas. Le "programme" est censé créer une fenêtre est afficher du texte e # Export Table - Kernel32.dll - GetProcessAddress # [ par joanna ] Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la # Export Table --- Kernell32.dll --- GetProcAddress # [ par joanna ] Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la Différences ??? [ par Arecibo ] Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi], Ancien code - CreateWindowEx ne fonctionne pas [ par TehWan ] Je ne comprends vraiment pas pourquoi CreateWindowEx ne fonctionne pas. Je code en ancien code avec MASM32. J'ai même essayé la nouvelle syntaxe (invo assembleur [ par rojbeni ] bonjour tous,comment  faire pour  saisie une suite de nombre  a stocker  dans un tableau   . le nombre maximum de nombre que l'on peut saisir est de 1 Masm32 - adressage direct - soucis ! [ par ouadji ] Bonjour à tous,mov eax , [11223344h]cette instruction existe ! registre de segment utilisé ... DS ... par défaut !Code machine de cette instruction : passage en pmode [ par TRAX44 ] salut,g 1 petit pb, kan je ceu pa c en mode protégé mov eax, cr0 or al, 1 mov cr0, eax(g deja cree et charger la gdt)le pc


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.