MAD_DIM | Bonjour,
Voila, j'ai écrit un palindrome en ASM. Je demande à l'utilisateur d'entrer un mot et je lui dit si c'est un palindrome ou pas meme si il tape des virgule ou autre. (,:,;,::,:k:;,:;,,y ak => palindrome).
Pour saisir la chaine de caractere j'utilise la fonction 09h. Et je voudrais savoir comment je pourrait récuperer seulement le mot 'kayak'(voir exemple) pour l'afficher et afficher sa symetrie également (j'entend par là 'KAY') ?
Si vous pouviez m'aider ? MERCI
Programme:
Code :
- ;Duszynski 19/12/2005
- ;Dimitri
- ;2121
- .MODEL SMALL
- .STACK
- .DATA
-
- titre DB "PALINDROME$"
- slign DB "----------$"
- carintro Db "Entrer une chaine de caracteres : $"
- carjuste DB 0ah, 0dh, "La chaine que vous avez entree est un palindrome !$"
- carfaux DB 0ah, 0dh, "La chaine que vous avez entree n'est pas un palindrome !$"
- recommencer DB 'Appuyer sur ENTER pour recommencer ou sur ESC pour arreter$'
- vecteur DB 250, ?, 251 dup ('$')
- vecteur2 DB 250, ?, 251 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, 0Ah
- LEA DX, vecteur
- int 21h
- PLACE:
- MOV SI, 2
- MOV BX, OFFSET vecteur
- MOV AL, [BX + 1]
- MOV AH, 0
- MOV DI, AX
- INC DI
- PUSH DI
- PALINDROME:
-
- CMP SI, DI
- JB COMPARAISON_SI
- SAUTFIN1:
- JMP FIN1
- COMPARAISON_SI:
- CMP vecteur[SI], 30h
- JB SI_PONCTUATION
- CMP vecteur[SI], 39h
- JBE OK_SI
-
- CMP vecteur[SI], 41h
- JB SI_PONCTUATION
- CMP vecteur[SI], 5Ah
- JBE OK_SI
-
- CMP vecteur[SI], 61h
- JB SI_PONCTUATION
- CMP vecteur[SI], 7Ah
- JBE MAJ_SI
-
- CMP vecteur[SI], 82h
- JE MAJ_é_SI
-
- CMP vecteur[SI], 85h
- JE MAJ_à_SI
-
- CMP vecteur[SI], 88h
- JE MAJ_ê_SI
-
- CMP vecteur[SI], 8Ah
- JE MAJ_è_SI
- SI_PONCTUATION:
-
- INC SI
- JMP PALINDROME
-
- MAJ_SI:
- SUB vecteur[SI], 20h
- JMP OK_SI
- MAJ_é_SI:
- SUB vecteur[SI], 37h
- JMP OK_SI
- MAJ_à_SI:
- SUB vecteur[SI], 44h
- JMP OK_SI
- MAJ_ê_SI:
- SUB vecteur[SI], 43h
- JMP OK_SI
- MAJ_è_SI:
- SUB vecteur[SI], 69h
-
- OK_SI:
- MOV DL, vecteur[SI]
- COMPARAISON_DI:
- CMP vecteur[DI], 30h
- JB DI_PONCTUATION
- CMP vecteur[DI], 39h
- JBE VERIFICATION
-
- CMP vecteur[DI], 41h
- JB DI_PONCTUATION
- CMP vecteur[DI], 5Ah
- JBE VERIFICATION
-
- CMP vecteur[DI], 61h
- JB DI_PONCTUATION
- CMP vecteur[DI], 7Ah
- JBE MAJ_DI
-
- CMP vecteur[DI], 82h
- JE MAJ_é_DI
-
- CMP vecteur[DI], 85h
- JE MAJ_à_DI
-
- CMP vecteur[DI], 88h
- JE MAJ_ê_DI
-
- CMP vecteur[DI], 8Ah
- JE MAJ_è_DI
- DI_PONCTUATION:
- DEC DI
- JMP PALINDROME
-
- MAJ_DI:
- SUB vecteur[DI], 20h
- JMP VERIFICATION
- MAJ_é_DI:
- SUB vecteur[DI], 37h
- JMP VERIFICATION
- MAJ_à_DI:
- SUB vecteur[DI], 44h
- JMP VERIFICATION
- MAJ_ê_DI:
- SUB vecteur[DI], 43h
- JMP VERIFICATION
- MAJ_è_DI:
- SUB vecteur[DI], 69h
-
- VERIFICATION:
-
- CMP vecteur[DI], DL
- JNE FIN2
- DEC DI
- INC SI
- JMP PALINDROME
- FIN1:
-
- MOV DH, 10
- MOV DL, 0
- MOV AH, 02h
- INT 10h
- MOV AX, 0900h
- LEA DX, carjuste
- INT 21h
- MOV AX, 0900h
- LEA DX, vecteur2
- INT 21h
- JMP RECOMMENCE
- FIN2:
-
- MOV DH, 10
- MOV DL, 0
- MOV AH, 02h
- INT 10h
- MOV AX, 0900h
- LEA DX, carfaux
- INT 21h
- RECOMMENCE:
- MOV DH, 15
- 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
- JMP MAINPROG
- QUIT:
- MOV AX, 4C00h
- INT 21h
- END
|
|