zlk Le 22/06/2001 à 16:59 Bon je t'explike:
tout d'abord il faudra pointé un registre d'adresse sur ton tableau exemple pour pouvoir se déplacé!
ensuite il te faut ton x et ton y pour la variable rechercé ou valeur,et surtout la dimensuion d'une ligne et la taille des données (octet,word,l.word!).
Voici un exemple:
je veus mettre le nombre se trouvant à tab[1,1]
;je peus faire!
move.w #1,d0 ;X
move.w #1,d1 ;Y
sub.w #1,d0
sub.w #1,d1
;Comme le tableau commence à [0,0] et non à tab[1,]
lea table(pc),a0 ;je charge mon tableau dans a0 =>a0 pointe sur le tableau!
;Calcul du nombre d'octet à ajouté!
mulu.w #5,d1 ;pour me mettre sur la bonne ligne
mulu.w #2,d0 ;je multplie par 2 car j'ai des doubles octets soit des words!
add.w d0,d1 ;je calcule enfin le nombre d'octets à ajouté!
clr.w d3
move.w 0(a0,d0.w),d3 ;je mets dans d3 ce que je recherchais!
;et voilà j'ai dans d3 ce que je recherchais normalement!
Si tu ne comprend pas ce que je viens d'expliké et tu ne piges pas le ZGuide alors là c'est que tu ne piges rien du tout à l'assembleur bien que le ZGuide me semble t'il que ça routine est buggé!
;mais comme je suis newbie comme toi il se peut que j'ai vraiment mal expliké mais j'ai fait ce que j'ai pu!
@+
si tu n'as rien compris a ce que dit zlk (encore KEKEBOSS ?), ne t'en fait pas ...
En fait l'idée est toute simple, il s'agit de calculer l'adresse d'un element dans le tableau.
Pour ca il te faut: la largeur du tableau (Xmax), la taille d'un element du tableau (size), l'adresse de depart du tableau (tab), et bien sur les coordonnées de l'element que tu charche (X et Y...
Pour plus d'efficaté, notre tableu ira de tab[0][0] à tab[Xmax-1][Ymax-1].
En suite tu multiplie simplement Y par Xmax et par size et tu ajoute ca a tab pour avoir le debut de la ligne, puis tu ajoute encore Y*size, pour avoir ton elemnt dans la ligne ...
Et voila !
Pour l'implementation, je te laisse faire les traveau pratiques, c'est pas tres dur ...
Je ne sais pas!
Dark Angel planté mon gars c'est pas moi!
Mais t'es pas loin!
PpHd Le 22/06/2001 à 16:59 N(x,y) <=> a N + x + y
C tout.
-128 < N < 127
C'est parceque le 68000 ne supporte pas le mode d'adresse (an,dn), seulement x(an,dn) ...
l'adresse 0(an,dn) parmet d'avoir l'adresse an+dn, sans avoir a faire l'addition ... (regarde dans zguide, il y a une artie sur les mode d'adressage)
zlk Le 22/06/2001 à 16:59 Le nombre avant la parenthèse ajoute un nombre d'octet a l'adresse.
Exemple si je veus effacé l'octet placé à la ligne numéroté 1 de mon ecran et pointé sur le deuxieme octet.
Je peus faire:
move.l #$4c00 ;depart de l'ecran <=>a0 pointe sur l'ecran!
move.b #2,d0
comme une ligne fait 30 octets
clr.b 30*1(a0,d0.b) ;voilà c'est fait!
Mais on pouvait faire aussi!
lea 32(a0),a0
clr.b (a0)
C'est parceke t'es placé à une adresse impair!
Certainement parceque tu fais un move.w ou un move.l à une adresse impair ce qui est pas possible à moins de faire move.b
Mais ça dépend de ce que tu as ds le tableau!
Mais...Si tu as bien compris ce qu'on t'as dit la haut tu ne devrais pas avoir ce genre de probleme!
C bon c résolu!!!
Je faisait un move.w dans un tableau en ds.b
Maintenant ca va marcher!!!
zlk Le 22/06/2001 à 16:59 Tu peus faire un move.w ds un tableau en ds.b cela ne pose point de probème sauf si t'es placé à une adresse impair!
Au fait si je fais:
clr.l d1
clr.l d0
move.w #$FEFF,d0
move.w d0,d1
le Motorolla va le codé comment
l'octet de poid fort ou l'octet de poid faible d'abord ?
qu'est ce que j'aurais dans le d0.b
$FE ou $FF?
zlk Le 22/06/2001 à 16:59 Eh ben oui!
j'ai vérifié ds le ZGuide!
ZGuide Ruleeez!
houlàlà, ya un truc que g pas compris...
si je fais:
lea data(pc),a0
move.w #4,d0
move.w 0(a0,d0.w),d1
data:
dc.w 12,250,3210,2,56,99
j'aurai quoi dans d1 ?
2 ?
sinon, comment je dois faire ?
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina
avec des espaces en début de ligne, bien sûr...
à chaque fois j'oublie que ça prend pas les espaces seuls... et merde !
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina
.
[edit]Edité par SbiBI le 22-06-2001 à 15:48:16[/edit]
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina
cf les mode d'adresseages dans ZGuide