CoreBreaker
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
13 avril 2003 à 20:59
Voici l'exemple d'un source:
;---------------------------------------------------
; assembleur: TASM
; Taille saisie max: 80 caractères
.model small
.386
TAILLE_MAX equ 80
pile segment use16
db 1000h dup(?)
pile ends
data segment use16 stack
buffer db TAILLE_MAX + 1
nbCar db 0
chaine db (TAILLE_MAX + 1) dup(?)
resPos db "Ce mot est un palindrome", 13, 10, '$'
resNeg db "Ce mot n'est pas un palindrome", 13, 10, '$'
nbMess db 10
nbConv db "00"
db " caracteres saisis", 13, 10, '$'
noCarMess db "Aucun caractere saisi", 13, 10, '$'
fin db 1000h dup(0) ; Evite les effets de bord
data ends
code segment use16
assume cs:code, ds: data, es: data, ss: pile
start:
push data ; Initialisation
push data
pop ds
pop es
cld
mov dx, offset buffer ; Saisie de la chaine
mov ax, 0A00h
int 21h
mov di, offset nbConv ; Teste du nombre de caractères
xor dx, dx
xor ax, ax
mov al, byte ptr [nbCar]
push ax
or al, al
jnz convertCar
mov dx, offset noCarMess
mov ah, 9
int 21h
mov al, 2 ; Code retour 2
jmp short termine
convertCar:
mov bx, 10 ; Conversion du nombre de caractères
div bx
add al, '0'
add dl, '0'
stosb
xchg ax, dx
stosb
mov dx, offset nbMess ; Affichage du nombre de caractères
mov ah, 9
int 21h
pop cx ; Cherher la fin du mot
mov si, offset chaine
mov di, si
chercherMotLoop:
lodsb
or al, 32h ; Mettre en minuscule
stosb
cmp al, ' '
loopne chercherMotLoop
cherchePalind: ; Verifier que le mot est un palindrome
dec si
mov di, offset chaine
cherchePalindLoop:
cmpsb
jne pasTrouve
sub si, 2
cmp si, di
jnbe cherchePalindLoop
trouve:
mov dx, offset resPos
mov ah, 9
int 21h
xor ax, ax ; Code retour 0
jmp short termine
pasTrouve:
mov dx, offset resNeg
mov ah, 9
int 21h
mov al, 1 ; Code retour 1
termine:
mov ah, 4Ch
int 21h
code ends
end start
; Fin du source
;---------------------------------------------------
Core Breaker :)