summaryrefslogtreecommitdiff
path: root/samples/recherche.s
blob: 46b979eec1aa9ea2c5ed30e3de9b9da05103b113 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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