Question

Je tente d'écrire un programme qui nécessite l'utilisation d'une entre autres, pour la boucle. J'ai un mal fou à essayer de trouver des exemples de code de base comme celui-ci sur d'autres sites.

Si quelqu'un pouvait me fournir s'il vous plaît une simple boucle, ou même les instructions que je devrais regarder je serais reconnaissant. Et s'il vous plaît, si vous connaissez une bonne ressource pour 68k tutoriels pour débutants, commentaires ci-dessous!

Merci!

Était-ce utile?

La solution

Voir une réponse à votre requête (3 résultat dans 'assemblage 68000' recherche google)

[modifier]

Ajouter une réponse de lien

Le 68000 a la caractéristique rare (unique?) D'avoir adresses distinctes et des registres de données. Il y a huit registres de données, D0-D7, et huit registres d'adresse, A0-A7. A7 est également le pointeur de pile SP. Cela signifie que 68000 langage d'assemblage a tendance à être plus facile à suivre parce que vous pouvez facilement dire quels registres contiennent des données et qui détiennent des adresses. Par exemple, cela est assemblée 68000 pour calculer la somme d'un tableau de mots:

    moveq #0, d0
    moveq #0, d1
    moveq #5, d2
loop:
    move.w (a0)+, d0
    add.l d0, d1
    dbra d2, loop

[/ edit]

Autres conseils

Comme mentionné dans l'aide EASy68K, la syntaxe d'une boucle dans 68K est la suivante:

FOR[.size] op1 = op2 TO op3  [BY op4]  DO[.extent]
   code 
ENDF

ou

FOR[.size] op1 = op2 DOWNTO op3  [BY op4]  DO[.extent]
   code
ENDF

autrement dit:

for.size counter_location = starting_condition to ending_condition step_size
   operations to be executed each loop
end of for loop

Le step_size et .Size sont tous deux en option.

Un exemple dans la pratique.
Le code suivant prend la variable suivante majuscule dc.b 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 0

lea    uppercase, a1    ; points a1 at the start of the uppercase variable
lea    $002000, a2      ; points a2 at the start of the destination address

for d1 = #1 to #26 do.s
    move.b  (a1)+, (a2)+
endf

; Memory locations $002000 - $002019 now contain ABCDEFGHIJKLMNOPQRSTUVYWXYZ

Cette boucle se déplace 26 octets à partir de l'adresse pointée par a1, à l'adresse pointée par a2. Le compteur sera stocké dans d1. La boucle commence à 1 (n ° 1 indique un « nombre brut » sous forme décimale), augmenter à chaque fois, et se terminent à 26. Les do.S à la fin de la première traite en ligne avec la taille de la branche avant d'utiliser. Il est facultatif aussi bien, mais lance un avertissement EASy68K. Par conséquent, le ci-dessous pour en boucle travaillera également si vous ne avez pas besoin de définir la condition de la branche.

for d1 = #1 to #26
    move.b  (a1)+, (a2)+
endf

En ce qui concerne un tutoriel, je vous recommande http://mrjester.hapisan.com/04_MC68/ . Il ne traite pas certaines des commandes plus avancées et les sujets, mais il offre une bonne compréhension de ce qui se passe au niveau de base / intermédiaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top