summaryrefslogtreecommitdiff
path: root/samples/recherche.s
diff options
context:
space:
mode:
authorPixel <>2001-04-17 00:42:20 +0000
committerPixel <>2001-04-17 00:42:20 +0000
commitd3050fa05ca0bc9231eca96bcbf62d1ec60c9f90 (patch)
tree9ea393da66cf3d9809afb80af44f755fb36d46c3 /samples/recherche.s
parentb77b22b3bd99c03b032cbd47465b1cbe34821120 (diff)
OUAAAAAAAAAAAAAAAAA
Diffstat (limited to 'samples/recherche.s')
-rw-r--r--samples/recherche.s38
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