Voila mon programme si vous pouviez tester. Je n'arrive pas a trouver mon erreur.
Lorsque je recommence il prend en compte des lettres qu'il ne devrait pas.
;Duszynski 19/12/2005
;Dimitri
;2121
.MODEL SMALL
.STACK
.DATA
titre DB "PALINDROME$"
slign DB "----------$"
carintro DB "Entrer une chaine de caracteres : $"
carchaine DB "La chaine de caractere est $"
carjuste DB "LA CHAINE QUE VOUS AVEZ ENTREE EST UN PALINDROME !$"
carsym DB "La symetrie de la chaine est $"
carfaux DB "LA CHAINE QUE VOUS AVEZ ENTREE N'EST PAS UN PALINDROME !$"
recommencer DB 'Appuyer sur ENTER pour recommencer ou sur ESC pour arreter$'
mot1 DB 250, ?, 251 dup ('$')
mot2 DB 250 dup('$')
.CODE
MAINPROG :
MOV AX, @DATA
MOV DS, AX
MOV AH, 0Fh
INT 10h
MOV AH, 0h
INT 10h
MOV DH, 3
MOV DL, 30
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, titre
INT 21h
MOV DH, 4
MOV DL, 30
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, slign
INT 21h
MOV DH, 6
MOV DL, 0
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, carintro
INT 21h
MOV AH, 0Ch
MOV AL, 0Ah
LEA DX, mot1
INT 21h
MOV SI, 2
MOV DI, 0
COMPARAISON:
CMP mot1[SI], '$'
JE VEC2
CMP mot1[SI], 30h
JB PONCTU
CMP mot1[SI], 39h
JBE VEC2
CMP mot1[SI], 41h
JB PONCTU
CMP mot1[SI], 5Ah
JBE VEC2
CMP mot1[SI], 61h
JB PONCTU
CMP mot1[SI], 7Ah
JBE VEC2
CMP mot1[SI], 82h
JB PONCTU
CMP mot1[SI], 97h
JBE VEC2
PONCTU:
INC SI
JMP COMPARAISON
VEC2:
MOV AL, mot1[SI]
MOV mot2[DI], AL
CMP mot2[DI], '$'
JE FIN1
INC SI
INC DI
JMP COMPARAISON
FIN1:
MOV DH, 8
MOV DL, 0
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, carchaine
INT 21h
MOV DH, 8
MOV DL, 27
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, mot2
INT 21h
MOV SI, 0
PALIN:
CMP SI, DI
JBE COMP_SI
PUSH SI
JMP FIN2
JMP_DI:
JMP COMP_DI
JMP_MAJU:
JMP MAJUSC_SI
COMP_SI:
CMP mot2[SI], 61h
JB JMP_DI
CMP mot2[SI], 7Ah
JBE JMP_MAJU
CMP mot2[SI], 82h
JE E_SI
CMP mot2[SI], 83h
JE A_SI
CMP mot2[SI], 84h
JE A_SI
CMP mot2[SI], 85h
JE A_SI
CMP mot2[SI], 88h
JE E_SI
CMP mot2[SI], 89h
JE E_SI
CMP mot2[SI], 8Ah
JE E_SI
CMP mot2[SI], 8Bh
JE I_SI
CMP mot2[SI], 8Ch
JE E_SI
CMP mot2[SI], 8Dh
JE E_SI
CMP mot2[SI], 93h
JE O_SI
CMP mot2[SI], 94h
JE O_SI
CMP mot2[SI], 95h
JE O_SI
CMP mot2[SI], 96h
JE U_SI
CMP mot2[SI], 97h
JE U_SI
A_SI:
MOV mot2[SI], 'A'
JMP COMP_DI
E_SI:
MOV mot2[SI], 'E'
JMP COMP_DI
I_SI:
MOV mot2[SI], 'I'
JMP COMP_DI
O_SI:
MOV mot2[SI], 'O'
JMP COMP_DI
U_SI:
MOV mot2[SI], 'U'
JMP COMP_DI
MAJUSC_SI:
SUB mot2[SI], 20h
JMP COMP_DI
JMP_VERIF:
JMP VERIF
MAJUSC:
JMP MAJUSC_DI
COMP_DI:
CMP mot2[DI], 61h
JB JMP_VERIF
CMP mot2[DI], 7Ah
JBE MAJUSC
CMP mot2[DI], 82h
JE E_DI
CMP mot2[DI], 83h
JE A_DI
CMP mot2[DI], 84h
JE A_DI
CMP mot2[DI], 85h
JE A_DI
CMP mot2[DI], 88h
JE E_DI
CMP mot2[DI], 89h
JE E_DI
CMP mot2[DI], 8Ah
JE E_DI
CMP mot2[DI], 8Bh
JE I_DI
CMP mot2[DI], 8Ch
JE E_DI
CMP mot2[DI], 8Dh
JE E_DI
CMP mot2[DI], 93h
JE O_DI
CMP mot2[DI], 94h
JE O_DI
CMP mot2[DI], 95h
JE O_DI
CMP mot2[DI], 96h
JE U_DI
CMP mot2[DI], 97h
JE U_DI
A_DI:
MOV mot2[DI], 'A'
JMP VERIF
E_DI:
MOV mot2[DI], 'E'
JMP VERIF
I_DI:
MOV mot2[DI], 'I'
JMP VERIF
O_DI:
MOV mot2[DI], 'O'
JMP VERIF
U_DI:
MOV mot2[DI], 'U'
JMP VERIF
MAJUSC_DI:
SUB mot2[DI], 20h
VERIF:
MOV AL, mot2[SI]
CMP mot2[DI], AL
JNE FIN3
INC SI
DEC DI
JMP PALIN
FIN2:
MOV DH, 10
MOV DL, 0
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, carjuste
INT 21h
MOV DH, 12
MOV DL, 0
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, carsym
INT 21h
MOV DH, 12
MOV DL, 29
MOV AH, 02h
INT 10h
POP SI
MOV mot2[SI], '$'
MOV AX, 0900h
LEA DX, mot2
INT 21h
JMP RECOMMENCE
FIN3:
MOV DH, 9
MOV DL, 0
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, carfaux
INT 21h
RECOMMENCE:
MOV DH, 15
MOV DL, 5
MOV Ah, 02h
INT 10h
MOV AX, 0900h
LEA DX, recommencer
INT 21h
MOV AH, 01h
INT 21h
CMP AL, 1Bh
JE QUIT
JMP MAINPROG
QUIT:
MOV AX, 4C00h
INT 21h
END