diff options
-rw-r--r-- | samples/rechcara.asm | 26 | ||||
-rw-r--r-- | samples/recherche.asm | 24 | ||||
-rw-r--r-- | samples/sommeentiers.asm | 28 |
3 files changed, 78 insertions, 0 deletions
diff --git a/samples/rechcara.asm b/samples/rechcara.asm new file mode 100644 index 0000000..c4747c3 --- /dev/null +++ b/samples/rechcara.asm @@ -0,0 +1,26 @@ +;Recherche du caractere 0DH dans une chaine de caracteres + +.DATA +CHAINE DS "ceci est un test de chaine de caractere de quatre vingt caracteres akdijhgffddss" +MSGPASTROUVE DS "Le caractere 0DH n'a pas été trouvé dans la chaine" +MSGTROUVE DS "Le caractere 0DH a été trouvé dans la chaine" +ZERO DB 0 + +.TEXT + +.START + + MOV R1,ZERO; + MOV R3,80; + MOV R2,0x0D; + MOV R5,ZERO; +BOUCLE: MOV R4,CHAINE[R1]; + JE R4,R2,TROUVE; + ADD R1,R1,1; + SUB R3,R3,1; + JNE R3 R5 BOUCLE; + MOV, [0xffffff04],MSGPASTROUVE; + JMP FIN; +TROUVE: MOV, [0xffffff04],MSGTROUVE; +FIN: HALT +
\ No newline at end of file diff --git a/samples/recherche.asm b/samples/recherche.asm new file mode 100644 index 0000000..a99e353 --- /dev/null +++ b/samples/recherche.asm @@ -0,0 +1,24 @@ +.DATA +TAB1 DS "efghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxywqbcdefghijklynoparstuvzxyw" +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
\ No newline at end of file diff --git a/samples/sommeentiers.asm b/samples/sommeentiers.asm new file mode 100644 index 0000000..2e533a7 --- /dev/null +++ b/samples/sommeentiers.asm @@ -0,0 +1,28 @@ +;Ce programme va calculer la somme des 97 premiers entiers +.DATA +MSG DS "La somme des " +MSG2 DS " premiers entiers est égale à" +N DB 97 +ZERO DB 0 +SOMME DB 4 + +.TEXT + +.START + MOV R5,[N] ;init du compteur + MOV R1,0 ;init de R1 + MOV R2,0 ;init de R2 + +BOUCLE: ADD R1,R1,R5 ; R1=R1+R5 + AND R3,Fl,0x00000001 ; + ADD R2,R2,R3 ; R2=R2+CF + SUB R5,R5,1 ; DEC R5 + MOV R6,ZERO ; + JNE R5,R6,BOUCLE ; si R5!=0 on refait la boucle + MOV, [SOMME], R1 ; ; + MOV, [SOMME+2], R2 ;on place la valeur de la somme + MOV, [0xffffff04], MSG ;on affiche le msg et la somme + MOV, [0xffffff06], SOMME ; + MOV, [0xffffff06], SOMME+2 ; + MOV, [0xffffff04], MSG2 ; + HALT
\ No newline at end of file |