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
|