;Nom : Yvan Bergeaud ;Groupe : 4B pile segment 'stack' base DB 100 DUP(?) sommet DB ? pile ends ;_-__-_-__-_-__-__-__-_-_-_-__-_-_-__-__-__-_-_-_- donnees segment 'data' caractere DB ? messaisie DB 0Dh,0Ah,0Ah, 'Veuillez saisir une suite de caractere terminee par un point : $' meserreur DB 0Dh,0Ah,0Ah, 'Erreur, nous voulons que des chiffres ou des caracteres compris entre A et Z majuscule et a et z minuscule$' messaffiche DB 0Dh,0Ah,0Ah, 'La suite de caractere inversee : $' messerreurdeux DB 0Dh,0Ah,0Ah, 'Ce n est pas un palindrome $' messok DB 0Dh,0Ah,0Ah, 'C est un palindrome $' TAB DB 100 DUP(?) TABPONCT DB 10 DUP(';',':',',','''',' ','!','?','"','(',')') donnees ends ;_-__-_-__-_-__-__-__-_-_-_-__-_-_-__-__-__-_-_-_- inst segment 'code' assume cs:inst, ds:donnees,ss:pile debut: mov ax,donnees mov ds,ax mov ax,pile mov ss,ax lea sp,sommet Initialisations : MOV AH,9 LEA DX,messaisie ; Appel de la fonction numéro 9 pour affichage message saisie INT 21h MOV CL,0 MOV SI,0 Saisie : MOV AH,8 ; Appel de la fonction numéro 8 pour saisie d'une suite de caractere INT 21h MOV caractere,AL MOV DI,0 test_ponctuation : MOV BL,caractere CMP BL,byte ptr[TABPONCT+DI] JE Traitementint INC DI CMP DI,10 JL test_ponctuation test_chiffre : CMP caractere,'.' ;test pour savoir si la suite ce termine par un point JE Affichage CMP caractere,'0' ; test pour savoir si la suite de caractere est inférieur à 0 sur la table ASCII JL Erreurprems CMP caractere,'9' ;test pour savoir si la suite de caractere est supérieur à 9 sur la table ASCII JLE Traitement1 test_majuscule : CMP caractere,'A' ; contrôle des majuscules JL Erreurprems CMP caractere,'Z' JLE Traitement1 test_minuscule : CMP caractere,'a' ;contrôle des minuscules JL Erreurprems CMP caractere,'z' JLE Traitement2 Erreurprems : MOV AH,9 ; Appel de la fonction numéro 9 pour affichage du message d'erreur LEA DX,meserreur INT 21h JMP Initialisations Traitementint: ; permet l'affichage des ponctuations sans pour autant le compter dans la comparaison MOV DL, BL ; permet d'afficher le caractère saisie MOV AH,2 INT 21h JMP Saisie Traitement1 : MOV DL, AL ; permet d'afficher le caractère saisie MOV AH,2 INT 21h PUSH AX MOV byte ptr [TAB +SI],AL ADD SI,1 INC CL ; incrémentation JMP Saisie Traitement2 : MOV DL, AL ; permet d'afficher le caractère saisie MOV AH,2 INT 21h SUB AL,32 ; permet de transformer les minuscules en majuscules PUSH AX MOV byte ptr [TAB +SI],AL ADD SI,1 INC CL ; incrémentation JMP Saisie Affichage : SUB SI,1 SUB CL,1 Comp : MOV SI,0 Compdeux : CMP CL,0 JLE Valide Affichage_carac : POP AX CMP AL, byte ptr [TAB+SI] JNE Erreurdeux DEC CL INC SI JMP Compdeux Erreurdeux : MOV AH,9 LEA DX, messerreurdeux ; Appel de la fonction 9 pour affichage message erreur deux INT 21h JMP RetourSysteme Valide : MOV AH,9 LEA DX, messok INT 21h RetourSysteme: mov ah,4Ch int 21h inst ends end debut