Taille d'un tableau

cs_krater Messages postés 22 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 17 juin 2006 - 3 juin 2003 à 10:31
TotalIllusion Messages postés 14 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 14 octobre 2003 - 4 juin 2003 à 16:03
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

TangiX Messages postés 59 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 2 juin 2004
3 juin 2003 à 14:45
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
0
cs_krater Messages postés 22 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 17 juin 2006
3 juin 2003 à 15:43
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
0
TotalIllusion Messages postés 14 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 14 octobre 2003
3 juin 2003 à 16:18
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
0
TotalIllusion Messages postés 14 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 14 octobre 2003
3 juin 2003 à 16:29
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_krater Messages postés 22 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 17 juin 2006
3 juin 2003 à 16:52
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
0
TotalIllusion Messages postés 14 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 14 octobre 2003
4 juin 2003 à 00:41
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
0
TotalIllusion Messages postés 14 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 14 octobre 2003
4 juin 2003 à 00:44
Petite erreur dans mon code,
Tableau BYTE 16 (8)
remplace sa par :
Tableau BYTE 16 dup (8)
desoler
By TotalIllusion
0
cs_krater Messages postés 22 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 17 juin 2006
4 juin 2003 à 09:08
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
0
TotalIllusion Messages postés 14 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 14 octobre 2003
4 juin 2003 à 16:03
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
0
Rejoignez-nous