begin process at 2010 02 09 19:00:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

c, c++ et asm

 > 

Palindrome en ASM


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Palindrome en ASM

jeudi 30 janvier 2003 à 18:09:19 | Palindrome en ASM

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
jeudi 30 janvier 2003 à 18:09:26 | Re : Palindrome en ASM

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
jeudi 30 janvier 2003 à 21:26:29 | Re : Palindrome en ASM

BruNews

Administrateur CodeS-SourceS




-------------------------------
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...
jeudi 30 janvier 2003 à 21:32:37 | Re : Palindrome en ASM

bugs2600





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

Tu ne serais pas expliquer ce que tu as fait sltp, merci
jeudi 30 janvier 2003 à 21:54:57 | Re : Palindrome en ASM

BruNews

Administrateur CodeS-SourceS




-------------------------------
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
jeudi 30 janvier 2003 à 22:14:33 | Re : Palindrome en ASM

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
jeudi 30 janvier 2003 à 22:23:09 | Re : Palindrome en ASM

BruNews

Administrateur CodeS-SourceS




-------------------------------
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.
vendredi 31 janvier 2003 à 01:26:21 | Re : Palindrome en ASM

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
vendredi 31 janvier 2003 à 10:07:46 | Re : Palindrome en ASM

BruNews

Administrateur CodeS-SourceS




-------------------------------
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...
dimanche 2 février 2003 à 19:45:11 | Re : urgent Palindrome en ASM

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

1 2

Cette discussion est classée dans : palindrome, asm


Répondre à ce message

Sujets en rapport avec ce message

Palindrome en ASM [ par 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 EXE Infector [ par seboss ] Bonjour tout le monde,Je dois realiser un petit projet sympas utilisant le C++,VB et ASM... Mais l'ASm je ne connasi pas assez bien pour realiser ce q asm en général [ par king171717 ] Bonjour a tousj'aimerai savoir si vous ne connaissez pas l'endroiou je pourrais trouver un site ou il y a un tutorial du langage asm complet ????merci Debutant en asm [ par valconi ] =[[V@LcOnI]]= Bonjourje voudrai me mettre à l'ASMQu'elle Editeur me conseillez vouset qu'elle compilateur me conseillez vousMerci d'avanceValco Demande de codeurs [ par Vermifuge ] Je veux fonder une team de codeurs ASM, je cherche des codeurs, attention, faut bien savoir coder( où avoir déjà une bonne expérience ), ya des trucs ASM [ par domasm ] Cherche développeur PIC16F84A and I2C pour aide (cours) et vérification de mes montages (Saint Mandé ou proche) Formater une disquette en asm [ par bugs2600 ] Personne ne pourrait me dire comment on peut formater une disquette en ASM.Si quelqu'un aurrais le code se serait sympa,merci d'avance incorporer un objet ASM dans un projet VB [ par sibi12 ] Bonjour je maitrise bien le VB et un peu le C et je suis dans mes debuts en ASM. J'aimerais incorporer du code ASM ds d'anciens programme VB pour les Convertion asm vers hex (ou bin) [ par mistigry ] J'utilise un PIC16F870 avec le compilateur CH Basic V1.2, ce compilateur me fournit des fichier asm (ou bsc) et pour pouvoir transférer le fichier sur realisation d'une clculette en asm [ par assm ] > j'ai besoin d'un programme qui simule le fonctionnement d'une calculatrice ça veut dire :> l'evaluation de l'expression "12+8*7-2+77"sera la suivant


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales