Information

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

Sign in

TP5 - Les fonctions 9

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


Insertion dans un tableau

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

Dans cet exercice, il vous est demandé d'écrire une fonction insert, qui va insérer un élément à un index donné dans un tableau. La fonction prend 4 arguments :

  1. La valeur à insérer dans le tableau.
  2. L'addresse de début du tableau. Il y a suffisamment d'espace pour insérer l'élément.
  3. L'index auquel insérer l'élement (0 <= index <= length).
  4. La taille du tableau.

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

ex: insert(13, [1,2,5], 2, 3) => [1,2,13,5]

ex: insert(13, [1,2,5], 0, 3) => [13,1,2,5]

ex: insert(13, [1,2,5], 3, 3) => [1,2,5,13]

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

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