Tableau en asm

Bonjour,
comment faire pour comparer deux tableaux de chaines de caracteres l'un de deux dimensions et l'autre d'une dimension(ligne par ligne pour le tableau de 2 dimension)et s'il ya égalité on affiche l'indice de la ligne?

7 réponses

  1. Modérateur
    Pour comparer deux chaines voilà un exemple.
    Dans esi on a le pointeur vers la première chaine et dans edi le pointeur vers la deuxième.

    compare:
        ; charge caractères en cours
        mov eax, [esi]
        mov ebx, [edi]
        ; compare caractère en cours
        cmp eax, ebx
        ; inégaux, alors saute vers le label "inegal" (à implémenter)
        jnz inegal
        ; les caractères sont égaux
        ; fin de chaine?
        cmp eax, 0
        ; alors on termine et on saute vers le label "egal" (à implémenter)
        jz egal
        ; jusau'ici les chaines sont égales. On pointe vers leur prochain caractère
        inc esi
        inc edi
        jmp compare


    Donc ça c'est pour des chaines sous forme de tableau à une dimension.
    Maintenant pour un tableau en deux dimensions ce n'est pas beaucoup plus différent.
    Il suffit d'utiliser le code du dessus, mais charger dans esi le tableau à une dimension et dans edi une ligne du tableau à deux dimensions.

    Si ton tableau est de taille n * m, si tu veux te rendre à tab[x][y], l'emplacement se trouve à tab + (x * y) + y.
    En fait tab[x] est un tableau à une dimension. A l'adresse de tab[x], qui est tab + (x * y), tu as un tableau de 1 dimension de taille y. Une ligne quoi.

    Donc si par exemple tu as le tableau à une dimension
    src[8]
    et le tableau à deux dimensions dst[3][8]

    Il faut que tu appelles "compare" 3 fois en chargeant l'adresse de src dans le registre esi, et dst[0] dans edi la première fois, dst[1] dans edi la deuxième fois, et dst[2] la troisième.

    Hm?
    1. Modérateur
      Tu saurais le faire pour une comparaison de deux tableaux à 1 dimensions?
      1. nn je n'ai pas encore commencé je suis débutante pouvez vous au moins me donnez une idée stp
        1. Modérateur
          Je ne connais pas la syntaxe de tasm mais si tu as déjà fait quelque chose je peux y jeter un coup d'oeil.
          1. Modérateur
            Salut,

            En asm pour quel type de processeur? Mips? x86? Arm? .....