MAD_DIM | Bonjour,
J'ai ecrit un programme mais il reste une erreur que je ne trouve pas car pour moi mon programme doit marcher.
Je rentre un mot, il me dit si c'est un palindrome puis me demande si je veux recommencer. Je recommence et la la chaine de caractere ne s'arrete pas la ou je met le '$' et contient aussi les lettres de ma saisie precedente.
SVP tester:
Metter ca: ESOPE reste ici et se repose
puis recommencer
et taper kayak Merci
Code :
- .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 FIN1
-
- 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
- INC SI
- INC DI
- JMP COMPARAISON
- FIN1:
-
- MOV AL, mot1[SI]
- MOV mot2[DI], AL
-
- 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
|
|