Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Assembleur : freescale mc9s12dp512
Ragnis
Membre
Membre
Messages : 1
Enregistré en : mai 2016

#1 Message par Ragnis » jeu. 19 mai 2016 22:08

Bonjour,

J'essaye de faire un programme capable de calculer la somme de nombres en assembleur. J'ai donc commencé avec un tableau de quatre valeurs simples (1, 2, 3, 4)

j'obtient donc:

Code : Tout sélectionner

   ORG $1000
   LDAA #0
   LDAB #4
   LDX #table
DEB   ADDA 0,X
   INX
   DBNE   B,DEB
   STAA $2000
FIN   BRA   FIN
table   db   1,2,3,4


Maintenant je voudrais faire la même chose mais avec 12,34,300,500 mais je ne suis pas sur de ce programme, j'obtient:

Code : Tout sélectionner

   ORG $1000
   LDD #0
   LDY #4
   LDX #table
DEB   ADDD 0,X
   INX
   INX
   DBNE   Y,DEB
   STD $2000
FIN   BRA   FIN
table   dw   12,34,300,500


Je ne suis pas sur pour:
"ADDD 0,X
INX"
car je ne suis pas certain de la signification de "ADDD 0,X" et je ne sais pas si "INX" va me permettre de prendre la 2è valeur de mon tableau ou s'il rajoute seulement la valeur "1" à X (puisque dans le programme précédent dans les deux cas ça fonctionnerait).


Merci d'avance.

Assembleur : freescale mc9s12dp512
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#2 Message par Guest » ven. 20 mai 2016 07:30

Bonjour

Tu fais une addition sur 16bits (ADDD), amha un seul coup d'index, doit suffire, pour passer à la donnée suivante. Je ne suis pas spécialiste de freescale ,tu devrais poser la question sur ABCelectronique :wink:

A+

Assembleur : freescale mc9s12dp512
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#3 Message par Claudius » sam. 21 mai 2016 12:40

Bonjour,

Après quelques recherches, il faut bien incrémenter 2 fois le registre X pour parcourir la table qui contient les valeurs sous 16 bits...
Cf. Assembleur: freescale mc9s12dp512 pour l'argumentation et les justifications ;-)


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Roger et 37 invités