summaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorPixel <>2001-04-17 00:42:20 +0000
committerPixel <>2001-04-17 00:42:20 +0000
commitd3050fa05ca0bc9231eca96bcbf62d1ec60c9f90 (patch)
tree9ea393da66cf3d9809afb80af44f755fb36d46c3 /samples
parentb77b22b3bd99c03b032cbd47465b1cbe34821120 (diff)
OUAAAAAAAAAAAAAAAAA
Diffstat (limited to 'samples')
-rw-r--r--samples/rechcara.s35
-rw-r--r--samples/recherche.s38
-rw-r--r--samples/sommeentiers.s31
3 files changed, 48 insertions, 56 deletions
diff --git a/samples/rechcara.s b/samples/rechcara.s
index c4747c3..4eeeef8 100644
--- a/samples/rechcara.s
+++ b/samples/rechcara.s
@@ -1,26 +1,25 @@
-;Recherche du caractere 0DH dans une chaine de caracteres
+;Recherche du caractere 0x0D 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
+CHAINE DS "ceci est un test de chaine\r de caractere quelconque..."
+MSGPASTROUVE DS "Le caractere 0x0D n'a pas été trouvé dans la chaine\n"
+MSGTROUVE DS "Le caractere 0x0D a été trouvé dans la chaine à l'index "
+MSGENDL DS "\n"
.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;
+ MOV R1, R0 ; R1 est le compteur
+ MOV R2, 0x0D ; R2 est l'élement recherché
+
+BOUCLE: MOV R4,CHAINE[R1] ; On lit un caractère.
+ JE R4, R2, TROUVE
+ ADD R1, 1 ; On incrément le pointeur
+ JNE R4, R0, BOUCLE ; C'était le caractère 0? On sort
+ MOV, [0xffffff04], MSGPASTROUVE;
+ JMP FIN
+TROUVE: MOV, [0xffffff04], MSGTROUVE;
+ MOV, [0xffffff06], R1
+ MOV, [0xffffff04], MSGENDL
FIN: HALT
- \ No newline at end of file
diff --git a/samples/recherche.s b/samples/recherche.s
index 46b979e..78db501 100644
--- a/samples/recherche.s
+++ b/samples/recherche.s
@@ -1,26 +1,24 @@
.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
+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 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
+ 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
- RET 4
\ No newline at end of file
diff --git a/samples/sommeentiers.s b/samples/sommeentiers.s
index e8b6926..0580e77 100644
--- a/samples/sommeentiers.s
+++ b/samples/sommeentiers.s
@@ -1,28 +1,23 @@
;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
+MSG2 DS " premiers entiers est égale à "
+N DD 97
+MSG3 DS "\n"
.TEXT
.START
- MOV R5,[N] ;init du compteur
- MOV R1,0 ;init de R1
- MOV R2,0 ;init de R2
-
+ MOV R6,[N] ;init du compteur, R6 sera la taille totale
+ MOV R5,R0 ; R5 sera notre compteur
+ MOV R1,R0 ;init de R1, qui sera la somme totale
+
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 ;
+ ADD R5,R5,1 ; DEC R5
+ JNE R5,R6,BOUCLE ; si R5!=R6 (=N) on refait la boucle
+ MOV, [0xffffff04], MSG ; on affiche le msg et la somme
+ MOV, [0xffffff06], R6 ;
MOV, [0xffffff04], MSG2 ;
+ MOV, [0xffffff06], R1 ;
+ MOV, [0xffffff04], MSG3 ;
HALT ;