Solution de la s5
Transcription
Solution de la s5
Solution de la Série de TD N° : 5 Le Traitement des Chaines de Données Ecrire des programmes en Assembleur 8086 qui permettent de : 1. Concaténer deux chaines de caractères ch1 et ch2 en une seule chaine ch3. Concaténer deux chaines de caractères pour former une seule chaine reviens à copier la première et la deuxième à l’offset de la troisième. JMP Start Ch1 db 'hello ' Ch2 db 'world!' Ch3 db '' Start : MOV SI, offset Ch1 MOV DI, offset Ch3 MOV CX,6 REP MOVSB MOV SI, offset Ch2 MOV CX,6 REP MOVSB HLT 2. Convertir une chaine de minuscules en majuscules. Le code ASCII du caractère ‘a’ est 61h, et le code de ‘A’ est 41h. Pour convertir un caractère majuscule en minuscule, on ajoute 20h à son code ASCII. Pour convertir un caractère minuscule majuscule en soustrait 20h de son code ASCII. JMP Start MSG1 DB 'allo' Start : MSG2 DB '' MOV SI, offset MSG1 MOV DI, offset MSG2 BOUCLE: MOV CX,4 LODSB SUB AL,20H STOSB Solution de la Série de TD N° : 4 LOOP BOUCLE HLT 3. Calculer le nombre de caractère ‘e’ dans une chaine de caractères ch. Le résultat sera stocké dans un registre. JMP START START: Ch DB 'Les chaines de caracteres' MOV DI,offset Ch MOV CX,25 MOV BL,0 MOV AL,'e' BOUCLE: SCASB JNE NEXT INC BL NEXT: LOOP BOUCLE HLT 4. De déterminer la longueur d’une chaîne de caractères. Pour déterminer la longueur d’une chaine de caractère on doit spécifier un caractère de fin. Dans cet exercice on suppose que le caractère qui indique la fin de la chaine est ‘$’. JMP Start MSG1 DB 'Une phrase se termine par un point.$' Start: Boucle: MOV DI,offset MSG1 MOV BL,0 MOV AL,'$' SCASB JE FIN INC BL JMP BOUCLE Fin: HLT 5. D’indiquer la présence de la chaîne de caractères ‘TEC568’, dans un tableau de caractères de N éléments. Si la chaine est présente dans le tableau le registre AL = 1. Si non AL = 0. JMP Start Tableau DB 'Les chaines de caracteres sont des suites de caracteres TEC586 ranges en memoire.' MSG DB 'TEC586' Solution de la Série de TD N° : 4 Start: MOV SI,offset Tableau MOV AL,0 MOV CX,77 Boucle: PUSH CX MOV DI,offset MSG MOV CX,6 REPE CMPSB JNE Next MOV AL,1 JMP Fin Next: POP CX LOOP Boucle Fin: HLT 6. De décider si un mot est un palindrome. Si le mot considéré est palindrome le registre AL = 1. Si non AL = 0. JMP Start Mot DB 'RADAR' Inv DB '' Start: MOV SI,offset mot MOV DI,offset inv ADD DI,4 MOV CX,5 Boucle: MOV AL,[SI] MOV [DI],AL INC SI DEC DI LOOP Boucle MOV SI, offset Mot MOV DI,offset Inv MOV CX,5 REPE CMPSB JNE Non MOV AL,1 JMP Fin Non: Fin: MOV AL,0 HLT