Mot palindrome

Description

Entrer au clavier une chaine de caractère et programme cherche les mot palindromes et les affiche a l'écran.

Source / Exemple :


.MODEL SMALL 
.STACK 
.DATA

   Titre 		db 	"TP Architecture: mots palindromes dans un texte",10,13,"$"
   Université 		db 	"UNIVERSITE A MIRA DE BEJAIA",10,13,"$"
   Faculté 		db  	"FACULTE DE SCIENCES EXACTES",10,13,"$"
   Département 		db 	"DEPARTEMENT D'INFORMATIQUE",10,13,"$"
   Ligne   		DB       "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~$"
   msg1 		Db      "Entrer une chaine de caracteres : $" 
   msg2 		DB      0ah, 0dh, "Les mots palindromes dans le texte sont: $" 
   msg3 		DB      0ah, 0dh, "Le texte n'a pas de mots palindromes! ",10,13,"$"
   msg4 		DB      0ah, 0dh, "Le nombre des mots plindromes est: $" 
   mgs1a 		db	"ANNEE UNIVERSITAIRE 2007_2008",10,13,"$"
   mgs2a		db	"TINSALHI FAOUZI",10,13,"$"
   realiser		db	"TARVAIL REALISER PAR :",10,13,"$"
   recommencer		 DB     'VEUILLEZ FAIRE VOTRE CHOIX: ENTER POUR RECOMMENCER/ ESC POUR SORTIR.$'
   tab 			DB 250, ?, 251 dup ('$')
   A DW ?
   B DW ?
   C DW ?
   L DB 11
   K DB 5

.CODE 

MAIN PROC 

DEBUT:
 
   MOV AX, @DATA 
   MOV DS, AX

   MOV AH, 0Fh
   INT 10h

   MOV AH, 0h
   INT 10h

   MOV DH,5
   MOV DL,15
   MOV AH, 02h 
   INT 10H
   mov ax,0900h
   lea dx,Titre
   int 21h
  	
   MOV DH,1
   MOV DL,50
   MOV AH, 02h 
   INT 10H
   mov ax,0900h
   lea dx,Université
   int 21h
			
   MOV DH,2
   MOV DL,50
   MOV AH, 02h 
   INT 10H
   mov ax,0900h
   lea dx,Faculté
   int 21h
	
   MOV DH,3
   MOV DL,50
   MOV AH, 02h 
   INT 10H
   mov ax,0900h
   lea dx,Département
   int 21h

   MOV DH, 6
   MOV DL, 20
   MOV AH, 02h
   INT 10h
   MOV AX, 0900h
   LEA DX, Ligne
   INT 21h

   MOV DH, 8
   MOV DL, 0
   MOV AH, 02h
   INT 10h
   MOV AX, 0900h 
   LEA DX, msg1
   INT 21h                     

   MOV AH, 0Ah 
   LEA DX, tab 
   int 21h
 
   
PLACE:

   MOV SI, 2 
   MOV BX, OFFSET tab
   MOV AL, [BX + 1]
   MOV AH, 0
   INC AX
   MOV A,AX
   MOV C,0

;**************************************tester la fin de texte********************************************************
TESTER: 
 
   CMP SI, A 
   JBE  RANGER
   JMP FIN1

RANGER:
   	
   MOV BX,SI
   MOV CX,0

;***************************************** SAUTER LES PONCTUATION DE TEXTE ****************************************

SAUTER_VIDE: 
	
   CMP tab[SI], 3Fh 	;Comparaison pour les caractères  ! " # $ % & ' ( ) * + , - . /O 1 .... 9: ; < = > ?
   JB  VID_SI

   CMP tab[SI], 5Bh		;Comparaison pour les caractères  A B C ... Z
   JB  TRANSFORMER

   CMP tab[SI], 60h		;Comparaison pour les caractères  [ \ ] ^ _
   JB  VID_SI 

   CMP tab[SI], 7Bh		;Comparaison pour les caractères  a b c ... z
   JB  TRANSFORMER

   CMP tab[SI], 7Fh		;Comparaison pour les caractères  | ~
   JB  VID_SI    

   MOV BX,SI			;Sauvgarder dans BX le debut du prochain mot a verifier
   JMP TRANSFORMER

VID_SI:

   INC SI
   mov bx,si
   JMP TESTER 

;*************************************quelques transformations d'un etat à un autre *******************************

TRANSFORMER:

   CMP tab[SI], 40h		;Comparaison pour les caractères  ! " # $ % & ' ( ) * + , - . /0 1 ... 9: ; < = > ?
   JB FIN_MOT
 
   CMP tab[SI], 5Ah		;Comparaison pour les caractères  A B C ... Z 
   JBE  VALIDER
 
   CMP tab[SI], 61h 	;Comparaison pour les caractères  [ \ ] ^ _
   JB FIN_MOT

   CMP tab[SI], 7Ah		;Comparaison pour les caractères  a b c ... z 
   JBE MAJUSCULE

   CMP tab[SI], 82h		;Comparaison pour les caractères  é
   JE EGALE_é_e
 
   CMP tab[SI], 85h		;Comparaison pour les caractères  à
   JE EGALE_à_a
 
   CMP tab[SI], 88h		;Comparaison pour les caractères  ê
   JE EGALE_ê_e
 
   CMP tab[SI], 8Ah		;Comparaison pour les caractères  è
   JE EGALE_è_e

   CMP tab[SI], 97h		;Comparaison pour les caractères  ù
   JE EGALE_ù_u

 
MAJUSCULE:

   SUB tab[SI], 20h
   JMP  VALIDER
 
EGALE_é_e:

   SUB tab[SI], 3Dh
   JMP  VALIDER

EGALE_à_a:

   SUB tab[SI], 44h
   JMP  VALIDER

EGALE_ê_e:

   SUB tab[SI], 43h
   JMP  VALIDER

EGALE_è_e:

   SUB tab[SI], 45h
   JMP VALIDER
EGALE_ù_u:

   SUB tab[SI], 42h
   JMP VALIDER

;***********************************valider les transformations*************************************************************
 VALIDER:
   
   MOV DL,tab[SI]
   MOV DH,0
   PUSH DX
   INC CX
   INC SI
   JMP TRANSFORMER

;*************************************reperer un mot du texte*************************************************************
 FIN_MOT:
   
   MOV B,SI			
   DEC SI			;Sauvgerder les paralettres
   MOV DI,SI			;du nouveau mot a verifier
   MOV SI,BX			

   CMP tab[SI+1], 27h
   JE SUITE

   JMP VERIFICATION

;*******************************verifier le mot**************************************************************************       
VERIFICATION:

   MOV DL,tab[SI]
   CMP tab[DI],DL
   JNE SUITE 
   INC SI   
   DEC DI     
   CMP SI,DI
   JA  AFFICHAGE
   JMP VERIFICATION  

SUITE:

   MOV SI,B
   INC SI
   JMP TESTER

;*******************************AFFICHAGE DU MOT************************************************************************** 

AFFICHAGE:

   CMP C,0
   JNE AFFICHAGE1

   MOV DH, 9
   MOV DL, 5          
   MOV AH, 02h
   INT 10h

   MOV AX, 0900h
   LEA DX, msg2
   INT 21h

AFFICHAGE1:

   INC C
   cmp c,8
   je AFFICHAGE2
   cmp c,15
   je AFFICHAGE2
   CMP C,22
   je AFFICHAGE2
   jmp AFFICHAGE3

AFFICHAGE2:

   add k,15  
   mov l,11

AFFICHAGE3:

   INC L
   MOV DH, L
   MOV DL, k
   MOV AH, 02h
   INT 10h

AFFICHAGE4:

   POP DX
   mov ah,02
   int 21h
  
   DEC CX
   CMP CX,0
   JNE AFFICHAGE4
      
   JMP SUITE

FIN1:

   CMP c,0
   JE FIN2

   MOV DH, 19
   MOV DL, 0          
   MOV AH, 02h
   INT 10h

   MOV AX, 0900h
   LEA DX, msg4
   INT 21h

 
   Mov Ax,C
   mov   bx,10
   mov   cx,0

boucle1:

   mov   dx,0
   div   bx
   push  dx
   inc   cx
   cmp   ax,0
   je    boucle2
   jmp   boucle1
	
boucle2:

   pop   dx
   add   dx,48
   mov   ah,2
   int   21h
   dec   cx
   cmp   cx,0
   jne   boucle2

fboucle2:

   JMP RECOMMENCE 

FIN2:

   MOV DH, 9
   MOV DL, 0          
   MOV AH, 02h
   INT 10h

   MOV AX, 0900h
   LEA DX, msg3
   INT 21h

   JMP RECOMMENCE 

RECOMMENCE:

   MOV DH, 23
   MOV DL, 10          
   MOV AH, 02h
   INT 10h
   MOV DX, OFFSET recommencer
   PUSH AX
   MOV AX, 0900h
   INT 21h
   POP AX

   MOV AH, 01h
   INT 21h
   CMP AL, 1Bh
   JE  QUIT
   MOV L,11
   mov k,5
   JMP DEBUT

QUIT:

   MOV AH, 0Fh 
   INT 10h 

   MOV AH, 0h 
   INT 10h 
		
   MOV DH,3
   MOV DL,10
   MOV AH, 02h 
   INT 10H
   mov ax,0900h
   lea dx,realiser
   int 21h
  	
   MOV DH,5
   MOV DL,30
   MOV AH, 02h 
   INT 10H
   mov ax,0900h
   lea dx,mgs2a
   int 21h
	
   MOV DH,6
   MOV DL,30
   MOV AH, 02h 
   INT 10H
   mov ax,0900h
   lea dx,mgs1a
   int 21h
	
   MOV AX, 4C00h 
   INT 21h 
main endp

END main

Conclusion :


ce code source ne vérifie pas toutes les lettres et les caractère spéciaux, et vous pouvez le modifier.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.