Taille d'un tableau

Signaler
Messages postés
22
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
17 juin 2006
-
Messages postés
14
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
14 octobre 2003
-
Bonjour,

je voudrait utiliser un tableau de ce style :

exemple db 0,8,0,0,0,8,0,8,0,0,0,0,0,8,8,8,8,12,8,8,8,8,0,0,0,0,0,8,0,8,0,0,0,8,0

seulement avec plus d'élément ml me met un message d'erreur : statement too complexe
il ne veu pas comprendre un tableau de plus de 48 élément alors que j'en voudrais au moins 64 voir bien plus

savez vous comment faire pour reésoudre mon probleme

9 réponses

Messages postés
59
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2004

suffit de mettre plusieurs fois db :

example db 0,0,8,8,0,0,0,0
db 0,8,8,0,0,0,0,0
etc ...

non seulement tu met plus de valeur mais en plus
c beaucoup plus lisible (tu peux organiser en 8*8 par ex)

TangiX
Messages postés
22
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
17 juin 2006

J'ai fait comme tu as dit et donc ecrit de cette façon :

exemple db 0,0,0,5,0,0,0,
db 0,0,0,5,0,0,0,
db 0,0,0,5,0,0,0,
db 0,0,5,5,5,0,0,
db 0,5,5,15,5,5,0,
db 0,5,0,0,0,5,0,
db 5,5,0,0,0,5,5,
db 0,5,0,0,0,5,0,

mais lorsque je compile, cela donne ceci :
statement too complex

je précis eque je travaille avec masm au cas ou ca changerai quelque chose
Messages postés
14
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
14 octobre 2003

Essaie de declarer ton tableau avant de l'initialiser avec tes valeur:

Tableau BYTE 64 DUP (?)

et si tu veut un tableau en 2 dimension alors tu fais

Tableau BYTE 8 DUP(8 DUP(?))
Sa te donnerais un tableau de 8x8 donc 64

Mon exemple est pour un tableaux de BYTE mais tu na qua mettre INTEGER si tu veut des nombre dedans.

Jai compiler avec les 2 facon en utilisant MASM et tout fonctionne.
Bonne continuation.
By TotalIllusion
Messages postés
14
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
14 octobre 2003

Dans ton tableau que tu avais declarer tout fonctionne, cest juste la maniere que tu la declarer qui fais que ca ne fonctionnais pas car tu avais mit des virgules a la fin de tes ligne alors qu'il ne devrais pas y en avoir.Essaie ceci si tu veut et sa fonctionne je les tester aussi

exemple db 0,0,0,5,0,0,0,0
db 0,0,0,5,0,0,0,0
db 0,0,0,5,0,0,0,0
db 0,0,5,5,5,0,0,0
db 0,5,5,5,5,5,0,0
db 0,5,0,0,0,5,0,0
db 5,5,0,0,0,5,5,0
db 0,5,0,0,0,5,0,0

Je te conseille d'utiliser un tableau en 2 dimension (decrit dans mon message precedent) car sa va etre plus facile a gerer, a mon avis biensure.

Bonne continuation

By TotalIllusion
Messages postés
22
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
17 juin 2006

Je comprend ce que tu me dis mais tu pourrais expliciter ce dont tu parle avec INTEGER
deplus je croyais que dup remplisser le tableau avec un nombre défini or je voudrais entrer le tableau comme dans l'exemple, c'est en fait un tableau de dessin
Messages postés
14
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
14 octobre 2003

INTEGER est definie dans masm , tu a dit que tu utilisais MASM et jai vue que tu entrais des integer donc jai penser que cest cela que tu voulais et pour le DUP cest pas pour rien que jai mit entre parentese (?) sa fais que la memoire est initialiser mes non definie.Exemple si je veut un tableau de 16 qui contient comme valeur definie 8 jaurais declarer mon array comme suit:
Tableau BYTE 16 (8)
et la oui tu aurrais des valeur predefini mais que tu peut toujour changer par la suite car ce nest pas des constance mais bien des valeur .
Bonne continuation
By TotalIllusion
Messages postés
14
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
14 octobre 2003

Petite erreur dans mon code,
Tableau BYTE 16 (8)
remplace sa par :
Tableau BYTE 16 dup (8)
desoler
By TotalIllusion
Messages postés
22
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
17 juin 2006

en effet ce tableau est bien compilé, mais concernant l'adressage il est différent car le résultat n'est pas celui attendu

j'utilise un adressage itératif ou la ligne suivante est enfait le total d'element de la ligne (x)*nombre de ligne et le nombre d'element de la ligne en question(y)
soit x*(nb ligne)+y
Messages postés
14
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
14 octobre 2003

x*(nb ligne)+y ??????
Ton tableau que tu avais declarer ne permet que de faire un adressage lineaire du genre:

Adresse = Base + Index * Element_Size

MOV BX,TON_INDEX
ADD BX,BX
MOV AX,ARRAY[BX]

Pour des coordonner cartesien voici le calcul a faire, cest pour 2 dimension donc X et Y
Address = Base_Address + (rowindex * col_size + colindex) * Element_Size

En fais je ne sais pas si j'ai repondu a ta question donc si ce nest pas le cas fais le moi savoir car ce netais pas claire a mes yeux.
Bonne continuation

By TotalIllusion