begin process at 2012 02 07 10:04:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

mon programme bloque


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

mon programme bloque

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ée 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 [ASM] Strcmp, prob evec la valeur de retour. [ par Ilsundal ] Bonjour a tous, j'ai réaliser la fonction strlen en ASM x86. tout fonctionne parfaitement sauf pour la valeur de retour, je souhaiterait qu'elle corre Recherche de fichier recursif [ par maximus4 ] Bonjour, j'ai la procédure suivante pour la recherche récursive, le résultat est stocké dans un fichier texte. [code=autre]invoke CreateFile,offset fi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,640 sec (3)

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