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 : addition d'entier [ Archives / Newbii ] (rhumsek)

lundi 12 juillet 2004 à 07:18:00 | addition d'entier

rhumsek

bonjour
voici un programme qui doit additionné les nombres d'un tableau, celui doit afficher comme résultat 1500 mais il affiche 1600, pouvez vous m'aider à le résoudre??
TITLE sommeint
;somme d'un tableau d'entiers
INCLUDE Irvine32.inc
.386
.MODEL flat,stdcall
.STACK 4096
ExitProcess PROTO,dwExitCode:DWORD
DumpRegs PROTO


PDWORD TYPEDEF PTR DWORD
;pointeur sur mot
.data
tablo DWORD 200h,400h,600h,800h,100h

;créations d'instances (variables pointeurs)
ptr1 DWORD tablo

.code
main PROC


mov edi,OFFSET tablo
mov ecx,LENGTHOF tablo
mov eax,0; ax=0
call dumpregs
mov edi,ptr1
mov eax,[edi]

L1:

add eax,[edi+4]
call dumpregs ; affiche?
loop L1

call dumpregs ;affiche?

exit
main ENDP
END main

rhumsek

lundi 12 juillet 2004 à 09:12:05 | Re : addition d'entier

Renfield

Administrateur CodeS-SourceS
je n'ai pas le fichier 'Irvine32.inc' qui doit inclure, je pense "dumpregs"...

que fais cette fonction, en fait ?


Je suis un parfait débutant, mais je pense à :

mov ebx,OFFSET tablo
mov ecx,LENGTHOF tablo
mov eax,0

@@:
add eax,[ebx] ;on ajoute le nombre pointé par ebx
add ebx, 4 ;on décale le pointeur
dec ecx ; on décrémente le compteur
jnz @B

lundi 12 juillet 2004 à 12:16:42 | Re : addition d'entier

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

edi n'est pas incrémenté dans ta boucle donc, tu ajoute ecx fois [edi+4] a eax
ton resultat donne: eax = 200h + (400h * ecx)

essai cela:
xor eax,eax
lea edi,tablo
mov ecx,LENGTHOF tablo
@L1:
add eax,[edi+ecx*4-4]
loop @L1

@++

lundi 12 juillet 2004 à 16:58:15 | Re : addition d'entier

BruNews

Administrateur CodeS-SourceS
Salut,

loop tout comme les anciennes instructions de chaines et bouclage (rep ...) sont a considerer comme obsoletes depuis le 486.
Il faut y preferer un couple 'dec jnz' par exemple qui offrira de bien meilleures performances.

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

lundi 12 juillet 2004 à 21:46:23 | Re : addition d'entier

Renfield

Administrateur CodeS-SourceS
Cool, j'etais pas trop loins, alors ;)



Cette discussion est classé dans : mov, dword, tablo, edi, dumpregs


Répondre à ce message

Sujets en rapport avec ce message

optimisation [ par sajid_morad ] salut tout le monde , j ai une parti du code en c++, que j ai voulu optimiser , le l ai reécri en asm , mai ça donne pas grand chose, si quelqu un po Mov mem immediat, immediat [ par Erkson ] Bonjour à tous.J'utilise un Pentium II PC, Windows ME, et un debuggeur qui a un assembleur intégré. Lorsque je veux modifier le programme que je debug 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 LecteurEstDvd asm inline [ par AlexMAN ] Bonjour, Voila j'ai un ptit pb au nivo, je pense, de l'appel de la fonction DeviceIoControl, le code : //Fonction Cint __stdcall LecteurEstDvd(char *p Aligner des données pour le SSE [ par epineurien ] Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu Cycles de mov [ par vecchio56 ] Je me demandais si les instructions suivantes étaient équivalentes en termes de performances, ou si certaines d'entres elles demandaient plus de cycle [Débutant] Problème de compiler [ par casafa ] Bonjour,Voila le code que j'esseye de compiler:MOV DX,offset MessageMOV AH,9INT 21hMOV AX,04c00hINT 21hMessage DB"Hello World !$"Avec le compilateur A 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 [NASM] TSR [ par sirozz ] Slt à tous,voila, j'essaye de capturer les événements clavier grâce à l'interruption 09h et un programme TSR, j'ai essayé sur 2000, sur XP et j'ai tél Affichage [ par AMENO ] Cher amis aidez moi, c'est une partie de mon examen de noel. et je suis bloquerenfin il 'sagit d'un programme que l'on doit entrer jsuqu a 32 caracter


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



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,484 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é.