1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
| data segment
chaine1 db 0ah,0dh,0ah,0dh,"Veuillez saisir une phrase:",0ah,0dh,'$'
chaine2 db 0ah,0dh,0ah,0dh,"Votre phrase:",0ah,0dh,'$'
chaine3 db 0ah,0dh,0ah,0dh,"Phrase inverse:",0ah,0dh,'$'
chaine4 db 0ah,0dh,0ah,0dh,"C'est un palindrome strict.",0ah,0dh,'$'
chaine5 db 0ah,0dh,0ah,0dh,"C'est un palindrome simple.",0ah,0dh,'$'
chaine6 db 0ah,0dh,0ah,0dh,"Ce n'est pas un palindrome.",0ah,0dh,'$'
chaine db 250 dup (?)
taille db ?
pkey db 0ah,0dh,0ah,0dh,"Tapez une touche...$"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
;PROGRAMME
lea dx,chaine1
mov ah,09h
int 21h
mov byte ptr chaine,250
mov ah,0ch
lea dx,chaine
mov ah,0ah
int 21h
lea dx,chaine2
mov ah,09h
int 21h
mov dl,[chaine+1]
mov taille,dl
mov cl,taille
mov ch,0
mov si,2
mov ax,2424h
push ax
refaire:mov dl,chaine[si]
mov ah,02h
int 21h
mov al,chaine[si]
mov ah,chaine[si+1]
push ax
inc si
loop refaire
lea dx,chaine3
mov ah,09h
int 21h
mov cl,taille
mov ch,0
recommencer: pop ax
mov dx,ax
mov ah,02h
int 21h
loop recommencer
mov si,2
mov cl,taille
mov ch,0
mov di,cx
inc di
strict: mov al,chaine[si]
mov bl,chaine[di]
cmp al,bl
jnz nonstrict
inc si
dec di
loop strict
lea dx,chaine4
mov ah,09h
int 21h
jmp fin
nonstrict: mov si,2
mov cl,taille
mov ch,0
convertir: cmp chaine[si],61h
jl balayer1
;ici char>61h
cmp chaine[si],7ah
jg balayer1
;ici 61h<char<7ah
sub chaine[si],20h
inc si
jmp convertir
balayer1: inc si
loop convertir
mov si,2
mov cl,taille
mov ch,0
mov di,cx
inc di
simple: mov al,chaine[si]
mov bl,chaine[di]
cmp al,20h
jz balayer2
cmp bl,20h
jz balayer3
cmp al,41h
jl balayer2
cmp bl,41h
jl balayer3
cmp al,5ah
jg balayer2
cmp bl,5ah
jg balayer3
cmp al,bl
jnz nonpalindrome
inc si
dec di
jmp simple
balayer2: inc si
jmp fini
balayer3: dec di
jmp fini
fini:loop simple
lea dx,chaine5
mov ah,09h
int 21h
jmp fin
nonpalindrome: lea dx,chaine6
mov ah,09h
int 21h
jmp fin
fin: lea dx,pkey
mov ah,09h
int 21h
mov ah,01h
int 21h
ends
end start |
Partager