summaryrefslogtreecommitdiff
path: root/samples/recherche.s
diff options
context:
space:
mode:
Diffstat (limited to 'samples/recherche.s')
-rw-r--r--samples/recherche.s26
1 files changed, 26 insertions, 0 deletions
diff --git a/samples/recherche.s b/samples/recherche.s
new file mode 100644
index 0000000..46b979e
--- /dev/null
+++ b/samples/recherche.s
@@ -0,0 +1,26 @@
+.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
+
+.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
+FIN: HALT
+ RET 4
+ \ No newline at end of file