Modulo: assembleur 68k

Résolu
Bonjour,

je suis entrain de creer un programme qui calcule le pgcd entre deux nombes en assembleur 68000
mon probleme c'est que je ne sais pas comment on peut calculer le modulo entre 2 nombres
en recherchant sur internet j'ai trouvé lecode suivant :

divu.w D1,D2 division entière : d2 / d1
asr.l #16,D2 recupère le reste

mais j'ai pas du tout compris

si qlq pourraint m'expliquer ce code je lui serais tres reconnaissant

et Merci
Configuration: Windows Vista
Firefox 2.0.0.14

5 réponses

  1. bonjour

    divu d1,d2 divise d2 (32 bits) par d1 (16 bits)

    le resulat est valide si V est 0 ( overflow)

    dans ce cas le quotient 16 bits est le mot de poids faible de d2 15..0
    le reste 16 bits est le mot de poids fort de d2 31..16

    un asr ou mieux un lsr permet de repasser le reste en mot de poids faible

    un swap ferait de meme tout en gardand le quotient en poids fort
    1. rien !

      l'instruction divu.w D1,D2 divise D2/D1 et met le le resultat dans D2

      ensuite l'instruction asr.l #16,D2 fait un décalage a droite de 16 bit

      c'est tout

      ja crois que ca un rapport avec le mathématique

      il n y a pas un mathématicien ici :)
      1. merci pour ton aide juanpablo

        mais pourquoi est ce que le quotient c'est le mot de poids faible et le reste c'est le mot de poids fort
        est ce que divu qui fait ca ou bien c'est un resultat du calcul de la division (mathematique)

        merci
        1. mais pourquoi est ce que le quotient c'est le mot de poids faible et le reste c'est le mot de poids fort

          ça c'est le concepteur de la puce (motorola je crois) qui en a décidé ainsi et bien sur l'instruction applique les regles mathematiques

          on s'y fait sans mal , j'ai plusieurs années de 68K