begin process at 2010 03 18 20:29:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

c et asm

 > MOT PALINDROME

MOT PALINDROME


 Information sur la source

Note :
Aucune note
Catégorie :c et asm Niveau :Initié Date de création :08/04/2009 Vu / téléchargé :1 999 / 67

Auteur : Tinsalhi

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • .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
.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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

EXECUTE /USR/BIN/ID par 0x0syscall
BIBLIOTHEQUE POUR LE 8086 par flory_
.:| CONVERSION D'UNE CHAINE EN MAJUSCULE |:. par fenkouch
PROGRAMME DE TRI (CROISSANT) D'UN TABLEAU EN ASSEMBLEUR DU D... par monticarlo
Source avec Zip SECTEUR BOOT, KERNEL ET CHARGEUR BOOT par sajaris

Commentaires et avis

Commentaire de Renfield le 09/04/2009 06:50:23 administrateur CS

J'ai activé ta source moi même.

Lorsque tu postes, tu cliques sur 'Prévisualiser' et tu obtiens ce message
"Attention : Votre source n'est pas encore en ligne !

Afin de finaliser votre participation veuillez ajouter au minimum 3 mots clef puis valider votre saisie en cliquant sur le bouton "Terminer" ci-dessous."

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales