summaryrefslogtreecommitdiff
path: root/samples/rechcara.s
diff options
context:
space:
mode:
Diffstat (limited to 'samples/rechcara.s')
-rw-r--r--samples/rechcara.s35
1 files changed, 17 insertions, 18 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