summaryrefslogtreecommitdiff
path: root/samples/recherche.s
blob: 78db501fc6c72cb186c3cf506dbec1e3b5b504fd (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
.DATA
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 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