rhumsek
Messages postés17Date d'inscriptionlundi 3 février 2003StatutMembreDernière intervention 5 novembre 2011
-
12 juil. 2004 à 07:18
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
12 juil. 2004 à 21:46
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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 juil. 2004 à 09:12
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
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 12 juil. 2004 à 16:58
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.