begin process at 2010 03 15 22:19:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

addition d'entier


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

addition d'entier

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ée 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 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 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 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 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 [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 mon code ne marche pas [ par mohoguess ] Bonjour a tous,je suis débutant en asembleur, et j'ai écrit un code qui sert a additionner le chiffre 1 jusqu'à 999999 fois (mon code ne sert à rien j Affichage de texte [ par ghuysmans99 ] Bonjour à tous,Je suis en train de créer un OS (pour l'instant, 16 bits) et mes routines d'affichage ne fonctionnent pas ...Voilà le code en question


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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,562 sec (3)

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