begin process at 2012 02 09 04:47:11
  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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,466 sec (3)

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