begin process at 2008 08 28 22:09:09
1 233 393 membres
485 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Palindrome en ASM [ Archives / c, c++ et asm ] (bugs2600)

Palindrome en ASM le 30/01/2003 18:09:19

bugs2600
Salut,

Quelqu'un pourrait-il m'aider, je suis débutant en asm et je dois faire un exrecice sur un palindrome c'est-à-dire que je dois entrer au clavier un mot ou une phrase il le programme dois dire si c'est un palindrome ou non?

Merci d'avance

Re : Palindrome en ASM le 30/01/2003 18:09:26

bugs2600




-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> Quelqu'un pourrait-il m'aider, je suis débutant en asm et je dois faire un exrecice sur un palindrome c'est-à-dire que je dois entrer au clavier un mot ou une phrase il le programme dois dire si c'est un palindrome ou non?
>
> Merci d'avance

Re : Palindrome en ASM le 30/01/2003 21:26:29

BruNews
(Admin CS)




-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> Quelqu'un pourrait-il m'aider, je suis débutant en asm et je dois faire un exrecice sur un palindrome c'est-à-dire que je dois entrer au clavier un mot ou une phrase il le programme dois dire si c'est un palindrome ou non?
>
> Merci d'avance

passe ptr sur chaine dans EDX
en sortie si EAX == 0 alors EST Palindrome

mov edx, offset chaine
call Palindrome
test eax, eax
jne short ERREUR

Palindrome PROC ; *psz dans EDX
mov ecx, edx ; EDX = d, ECX = c
xor eax, eax
L1:
cmp byte ptr[edx], 0
je short L2
inc edx
jmp short L1
L2:
cmp ecx, edx
je short plndExit ; chaine vide
dec edx
L3:
cmp ecx, edx
jae short plndExit
mov al, [ecx]
sub al, byte ptr[edx]
jne short plndExit
inc ecx
dec edx
jmp short L3
xor al, al
plndExit:
ret 0
Palindrome ENDP

ciao...

Re : Palindrome en ASM le 30/01/2003 21:32:37

bugs2600




-------------------------------
Réponse au message :
-------------------------------

Tu ne serais pas expliquer ce que tu as fait sltp, merci

Re : Palindrome en ASM le 30/01/2003 21:54:57

BruNews
(Admin CS)




-------------------------------
Réponse au message :
-------------------------------

>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> Tu ne serais pas expliquer ce que tu as fait sltp, merci
tu mets ECX à pointer au debut chaine.
ensuite xor eax, eax
prepare la sortie OK
tu pousses edx jusqu'au zero final de chaine.
L2:
cmp ecx, edx
je short plndExit ; chaine vide
dec edx ramène sur dernier
L3:
cmp ecx, edx ; en C serait while(ECX < EDX)
jae short plndExit
mov al, [ecx]
sub al, byte ptr[edx]
jne short plndExit ; ne sont pas egaux donc sort != 0
inc ecx
dec edx
jmp short L3
xor al, al
plndExit:
ret 0 aucun param sur pile

Re : Palindrome en ASM le 30/01/2003 22:14:33

bugs2600
-------------------------------
Réponse au message :
-------------------------------

Voilà ce que j'ai fait mais je ne vois ce que je dois modifier pour que sa fonctionne avec ce que tu as fait:

Source:

.MODEL SMALL
.STACK
.DATA

AcMsg1 db "Entrez un mot ou une phrase: $"
AcMsg2 db "Bravo, Il s'agit d'un Palindrome"
AcMsg3 db "Non, Il ne s'agit pas d'un Palindrome"


.Code

Palindrome PROC ; *psz dans EDX
mov ecx, edx ; EDX = d, ECX = c
xor eax, eax
L1:
cmp byte ptr[edx], 0
je short L2
inc edx
jmp short L1
L2:
cmp ecx, edx
je short plndExit ; chaine vide
dec edx
L3:
cmp ecx, edx
jae short plndExit
mov al, [ecx]
sub al, byte ptr[edx]
jne short plndExit
inc ecx
dec edx
jmp short L3
xor al, al
plndExit:
ret 0
Palindrome ENDP

Re : Palindrome en ASM le 30/01/2003 22:23:09

BruNews
(Admin CS)




-------------------------------
Réponse au message :
-------------------------------

> -------------------------------
> Réponse au message :
> -------------------------------
>
> Voilà ce que j'ai fait mais je ne vois ce que je dois modifier pour que sa fonctionne avec ce que tu as fait:
>
> Source:
>
> .MODEL SMALL
> .STACK
> .DATA
>
> AcMsg1 db "Entrez un mot ou une phrase: $"
> AcMsg2 db "Bravo, Il s'agit d'un Palindrome"
> AcMsg3 db "Non, Il ne s'agit pas d'un Palindrome"
>
>
> .Code
>
> Palindrome PROC ; *psz dans EDX
> mov ecx, edx ; EDX = d, ECX = c
> xor eax, eax
> L1:
> cmp byte ptr[edx], 0
> je short L2
> inc edx
> jmp short L1
> L2:
> cmp ecx, edx
> je short plndExit ; chaine vide
> dec edx
> L3:
> cmp ecx, edx
> jae short plndExit
> mov al, [ecx]
> sub al, byte ptr[edx]
> jne short plndExit
> inc ecx
> dec edx
> jmp short L3
> xor al, al
> plndExit:
> ret 0
> Palindrome ENDP

désolé mais je n'ai fourni qu'une fonction, pas un prog complet. De + il faut préciser quel model et quelle plate forme tu vises.
Ma func Palindrome est pour Win32:
.586
.model flat, stdcall
option casemap :none
option prologue:none
option epilogue:none

sachant que toute chaine est finie par un zero.

Re : Palindrome en ASM le 31/01/2003 01:26:21

bugs2600
-------------------------------
Réponse au message :
-------------------------------
-------------------------------
Réponse au message :
-------------------------------
-------------------------------
Réponse au message :
-------------------------------

-------------------------------
Réponse au message :
-------------------------------

Serais-tu corriger ce qui ne vas pas dans ma boucle sltp pour que mon programme foncrtionne. Merci d'avance

Voilà ce que j'ai fait:


.MODEL SMALL
.STACK
.DATA

AcMsg1 db "Entrez un mot ou une phrase: $"
AcMsg2 db "Bravo, Il s'agit d'un Palindrome"
AcMsg3 db "Non, Il ne s'agit pas d'un Palindrome"

AcClav db 50, ?, 51 dup(' ')


.Code

main:

mov ax, @Data
mov dx, ax

mov ax, 0003h
int 10h

mov ax, 0900h
mov dx, offset AcMsg1 ;Fait pointer dx sur AcMsg1
int 21h

mov ax, 0a00h ;Permet d'entrer la chaine de carcr?re au clavier
mov dx, offset AcClav ;Fait pointer dx sur AcClav
int 21h

mov SI, 0 ;Initialisation de SI ? 0


Boucle: ; *psz dans EDX
mov dx, SI ; EDX = d, ECX = c
xor ax, ax

L1:
cmp byte AcClav[SI], 0
je short L2
inc SI
jmp short L1

L2:
cmp dx, SI
je short plndExit ; chaine vide
dec SI

L3:
cmp dx, SI
jae short plndExit
mov al, [dx]
sub al, byte AcClav[SI]
jne short plndExit
inc dx
dec SI
jmp short L3
xor al, al
plndExit:
ret 0

Boucle END

End Main

Re : Palindrome en ASM le 31/01/2003 10:07:46

BruNews
(Admin CS)




-------------------------------
Réponse au message :
-------------------------------

> -------------------------------
> Réponse au message :
> -------------------------------
> -------------------------------
> Réponse au message :
> -------------------------------
> -------------------------------
> Réponse au message :
> -------------------------------
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> Serais-tu corriger ce qui ne vas pas dans ma boucle sltp pour que mon programme foncrtionne. Merci d'avance
>
> Voilà ce que j'ai fait:
>
>
> .MODEL SMALL
> .STACK
> .DATA
>
> AcMsg1 db "Entrez un mot ou une phrase: $"
> AcMsg2 db "Bravo, Il s'agit d'un Palindrome"
> AcMsg3 db "Non, Il ne s'agit pas d'un Palindrome"
>
> AcClav db 50, ?, 51 dup(' ')
>
>
> .Code
>
> main:
>
> mov ax, @Data
> mov dx, ax
>
> mov ax, 0003h
> int 10h
>
> mov ax, 0900h
> mov dx, offset AcMsg1 ;Fait pointer dx sur AcMsg1
> int 21h
>
> mov ax, 0a00h ;Permet d'entrer la chaine de carcr?re au clavier
> mov dx, offset AcClav ;Fait pointer dx sur AcClav
> int 21h
>
> mov SI, 0 ;Initialisation de SI ? 0
>
>
> Boucle: ; *psz dans EDX
> mov dx, SI ; EDX = d, ECX = c
> xor ax, ax
>
> L1:
> cmp byte AcClav[SI], 0
> je short L2
> inc SI
> jmp short L1
>
> L2:
> cmp dx, SI
> je short plndExit ; chaine vide
> dec SI
>
> L3:
> cmp dx, SI
> jae short plndExit
> mov al, [dx]
> sub al, byte AcClav[SI]
> jne short plndExit
> inc dx
> dec SI
> jmp short L3
> xor al, al
> plndExit:
> ret 0
>
> Boucle END
>
> End Main

Salut,
tu peux aller voir le prog complet dans mes sources. Tu verras comment appeler cette fonction.
ciao...

Re : urgent Palindrome en ASM le 02/02/2003 19:45:11

bugs2600




-------------------------------
Réponse au message :
-------------------------------

>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
Besoin d'aide pourrais-tu regarder le programme et me dire pourquoi il ne prend pas les espaces et si tu serais le simplifier et me l'expliquer merci d'avance:

MODEL SMALL
.STACK
.DATA

AcMsg DB 'Entrer une Phrase ou un Mot: $'
AcMsg1 DB 'Oui, Un Palindrome $'
AcMsg2 DB 'Non, Pas un Palindrome $'

STRING LABEL BYTE
MAXLEN DB 50
STRLEN DB ?
STRFLD DB 50 DUP(' ')

.CODE

MAIN: MOV AX,@DATA
MOV DS,AX

CALL CLS ;Efface l'?crant
CALL CURSOR ;Place le curseur ? (0,0)
CALL READ

CALL CLS
CALL CURSOR

LEA BX,STRFLD
MOV CH,00H
MOV CL,STRLEN
CMP CX,02H
JC PAL
MOV DX,BX
ADD DX,CX
DEC DX
SHR CX,1

AGAIN: MOV AL,[BX]
XCHG BX,DX
CMP AL,[BX]
JNE NOTPAL
XCHG BX,DX
INC BX
DEC DX
LOOP AGAIN

PAL: MOV AH,09H
LEA DX,AcMsg1
INT 21H
JMP HALT

NOTPAL: MOV AH,09H
LEA DX,AcMsg2
INT 21H

HALT: MOV AX,4C00H ;Termine le programme
INT 21H

;Efface l'?crant
CLS: MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET

;Place le curseur
CURSOR: MOV DX,0000H
MOV AH,02H
MOV BH,00H
INT 10H
RET

READ: MOV AH,09H ;Message d'affichage
LEA DX,AcMsg
INT 21H

MOV AH,0AH
LEA DX,STRING
INT 21H
RET

WRITE: MOV AH,09H
LEA DX,STRFLD
INT 21H
RET

End MAIN


[Page 1 Page 2]
Classé sous : palindrome, asm

Participer à cet échange

Livres en rapport

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

Snippets en rapport

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS