Information

Deadline 29/03/2024 12:00:00
Submission limit No limitation

Sign in

TP5 - Les fonctions 10

Le simulateur est disponible ici : http://asm.info.ucl.ac.be/ Vous pouvez trouver le syllabus ici : https://sites.uclouvain.be/LSINC1102/pfo/introduction.html


Fonction map

Vous devez récupérer les arguments passés à votre fonction. Vous ne pouvez pas utiliser directement les variables déclaré avec DB

Dans cet exercice, il vous est demandé d'écrire une fonction map, qui va appliquer une fonction donnée à tous les éléments d'un tableau. La fonction prend 3 arguments :

  1. L'addresse de début du tableau.
  2. La taille du tableau.
  3. La fonction à appliquer. Celle-ci prend un seul argument.

La fonction ne doit pas renvoyer de valeur particulière.

ex: map([1,2,5], 3, def func(x): x+10) => [11,12,15]

Les tests INGInious vont initialiser les variables de la façon suivante :

; Les registres B et C sont utilisé, leur valeur doit être inchangé après exécution de la fonction
MOV B, [rb]
MOV C, [rc]
MOV D, tab
PUSH [len]
PUSH func
CALL map
HLT
map: ; Le label map est déja déclaré pour vous
; ====> Votre code sera inséré ici par INGINIOUS  <=====
; Ajouté par INGINIOUS pour les tests
tab: DB "?"
     ...
     DB "?"
len: DB "?"
func:
; Corps de la fonction à appeller
rb: DB "?"
rc: DB "?"