Informações

Prazo de entrega 29/03/2024 12:00:00
Limite de submissão No limitation

Entrar

TP5 - Les fonctions 7

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


Appel à une fonction

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 func, qui prend 2 arguments. Le premier argument est une chaîne de caratères "string1", le deuxième est également une chaîne de caractères. Votre fonction doit renvoyer 1 si "string1" est un sous string de "string2" et 0 sinon. Vous pouvez supposer que len(string2) >= len(string1)

En Python :

def func(string1, string2):
    i = 0
    j = 0
    while i < len(string1):
        if j >= len(string2):
            return 0
        elif string1[i] == string2[j]:
            i += 1
            j += 1
        else:
            if i == 0:
                j += 1
            i = 0
    return 1

Example :

func("hello","hello world") => True func("hel", "hello") => True func("hello", "world") => False

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, string1
PUSH string2
CALL func
HLT
func: ; Le label func est déja déclaré pour vous
; ====> Votre code sera inséré ici par INGINIOUS  <=====
; Ajouté par INGINIOUS pour les tests
string1: DB "?"
DB 0
...
string2 : DB "?"
DB 0
...
rb: DB "?"
rc: DB "?"