diff options
Diffstat (limited to 'samples/recherche.s')
-rw-r--r-- | samples/recherche.s | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/samples/recherche.s b/samples/recherche.s index 46b979e..78db501 100644 --- a/samples/recherche.s +++ b/samples/recherche.s @@ -1,26 +1,24 @@ .DATA -TAB1 DS "efghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxywNNEX" -TAB2 DS "aafghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxy" -MSGTROUVE DS "TAB1 et TAB2 ont un élément en commun" -MSGPASTROUVE DS "TAB1 et TAB2 n'ont pas d'élément en commun" -ZERO DB 0 +TAB1 DS "efghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghXjklynoparstuvzxyw" +TAB2 DS "aafghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefgXijklynoparstuvzxy" +MSGTROUVE DS "TAB1 et TAB2 ont un élément en commun à l'index " +MSGPASTROUVE DS "TAB1 et TAB2 n'ont pas d'élément en commun\n" +ENDLINE DS "\n" .TEXT .START - MOV R5, 101 ;R5 est le compteur - MOV R1, TAB1 ;TAB1 est un tableau de 100 octets de type char - MOV R2, TAB2 ;TAB2 est un tableau de 100 octets de type char -BOUCLE: SUB R5 R5 1 - MOV R6, [R1] - MOV R7, [R2] ;decrementation du compteur - JE R6 R7 TROUVE ;test si TAB1[i]=TAB2[i] =>jmp trouvé - ADD R1 R1 1 ;incrementation de R1 (element suivant du tableau TAB1) - ADD R2 R1 1 - MOV R8, ZERO ;incrementation de R2 (element suivant du tableau TAB2) - JNE R5 R8 BOUCLE ;si compteur !=0 on refait la boucle - MOV, [0xffffff04], MSGPASTROUVE ;il n'y a pas de d'éléments identiques a une position i => on place dans R3 le msg a afficher - JMP FIN ;jmp a l'affichage -TROUVE: MOV, [0xffffff04], MSGTROUVE ;il y a une paire d'éléments identiques => on place dans R3 le msg a afficher + MOV R4, TAB2 ; R4 est la taille max + SUB R4, TAB1 + MOV R5, R0 ; R5 est le compteur +BOUCLE: MOV R6, TAB1[R5] ; on charge les lettres + MOV R7, TAB2[R5] ; + JE R6 R7 TROUVE ; test si TAB1[i]=TAB2[i] =>jmp trouvé + ADD R5, 1 ; incrémentation du compteur + JNE R5 R4 BOUCLE ; si compteur !=taille max on refait la boucle + MOV, [0xffffff04], MSGPASTROUVE ; il n'y a pas de d'éléments identiques a une position i => on place dans R3 le msg a afficher + JMP FIN ; jmp a l'affichage +TROUVE: MOV, [0xffffff04], MSGTROUVE ; il y a une paire d'éléments identiques => on place dans R3 le msg a afficher + MOV, [0xffffff06], R5 + MOV, [0xffffff04], ENDLINE FIN: HALT - RET 4
\ No newline at end of file |