Information

Deadline No deadline
Submission limit No limitation

Sign in

TP7 - PGCD en recursion


Grâce à l'utilisation de la pile, il est possible de créer des fonctions récursive dans notre language assembleur. Ecrivez un code en asm qui permet de calculer le PGCD (Plus Grand Commun Diviseur) de @x et @y.

def PGCD(a, b):
    if a == b:
        return a
    elif a > b:
        c = a - b
        return PGCD(c, b)
    else:
        c = b - a
        return PGCD(a, c)

Voici l'état de la mémoire avant l'appel de la fonction:

adresse valeur
@SP 16381
... ...
16381 Adresse de retour
16382 x
16383 y
... ...

La stack commence a l'adresse 16383 et contient actuellement 3 élément: x, y et l'adresse de retour.

Attention, vous ne devez écrire que le corps de la fonction!

N'oubliez pas de gérer la pile, récuperez les differents éléments et reinitilisez bien la valeur a l'adresse @SP. Mettez la valeur de retour dans le registre D.