begin process at 2012 05 25 09:48:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Débutant(e)

 > 

question (affectation d'un caractere)


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

question (affectation d'un caractere)

mardi 23 novembre 2010 à 20:41:16 | question (affectation d'un caractere)

marooh

bonjour,
une question simple
comment affecter à une variable un caractere??
char db ?
mov si,offset chaine
mov char,byte ptr[si]
pourquoi ça marche pas??
mardi 23 novembre 2010 à 21:06:18 | Re : question (affectation d'un caractere)

ToutEnMasm

Réponse acceptée !
mov [char],byte ptr [esi] ;parait mieux ?
Pas du tout,les transactions entre mémoire doivent passer par les registres.
mov al,[esi]
mov char,al
mardi 23 novembre 2010 à 22:55:04 | Re : question (affectation d'un caractere)

marooh

re,
juste une derniere question.
j'ai un probleme de registre que je n'arrive pas à resoudre ici.un code pour trouver la lettre la plus occurente dans la chaine
Code :
.model small
.stack 100h
.data
chaine db "je veux tester$"
char db '$'
nr dw ?
tch dw ? 
entre dw 10,13,'$'
msg4 dw "le nombre de repétion de caractére le plus reccurence est:$"  
.code
mov tch,14 
mov si,offset chaine 
mov nr,0 
mov cx,tch 
dec cx 
mov dx,si 
add dx,tch 
repete14: 
mov bx,0 
mov al,[si] 
mov char,al  
repete24: 
mov al,[si+1]
cmp al,char 
je meme 
jmp different 
meme: 
inc bx 
different: 
inc al 
cmp al,dx \\dans cette ligne,je n'ai pas su faire la modification adequate
jg repete24 
inc si 
cmp dx,nr 
jg affecter 
loop repete14 
affecter: 
mov nr,bx 
loop repete14 
mov dx,offset msg4 
mov ah,9
int 21h
mov ax,nr 
mov ah,2
int 21h
mov dx,offset entre 
mov ah,9
int 21h
mercredi 24 novembre 2010 à 14:43:23 | Re : question (affectation d'un caractere)

ToutEnMasm


Je n'ai pas trop lu le code parce qu'il semble manquer quelque chose.
La bonne manière de procéder:
créer un tampon de 26 bytes intialiser a zero.
Différencie-t-on minuscules majuscules ?
si oui deuxieme tampon.
Si non,lire caractere:
soustraire de al,la valeur de "A"
mettre al dans bx
inc [ds:tamp+bx]
fin:
mov al,[tamp]
mov bx,1
@@:
.if al < [ds:tamp+bx]
mov al,[ds:tamp+bx]
inc bx
jmp @B
.endif
RAJOUTE la condition d'arrêt (ecx par exemple)



mercredi 24 novembre 2010 à 20:56:27 | Re : question (affectation d'un caractere)

marooh

re,
merci pour la reponse!!
j'ai écrit une fonction pour trouver le mot le plus long d'une chaine,ça assemble sans probleme mais l'execution ne donne pas de resultat
j'ignore la source du probleme,j'ai lu et relu le code plusieurs fois mais en vain
Code :
motch macro	
	mov nbc,0
	mov nbcmax,0

	mov di,offset MotLong
    mov si,offset chaine
	repeter :
	mov al,chaine[si]
	inc si
    cmp al,'0'
    je stopAjout
    cmp al,' '
	je stopAjout
	cmp al,','		      	  
	je stopAjout			  			   		  
	mov MotLong[di], al			  
	inc di
	add nbc,1	  
	jmp repeter 
	stopAjout :
	mov MotLong[di] ,'0'
	mov al,nbcmax
	mov bl,nbc
	cmp al, bl 
	jg pasChangementDuMot
	mov nbcmax,bl
	xor di,di
	repeter1 :
	mov al,MotLong[di]
	mov MotPlusLong[di],al
	cmp al,'0'
	je finChangement
	inc di
	jmp repeter1
	finChangement :
	pasChangementDuMot :
	mov di,si
	add di,-1
	mov al,chaine[di]
	cmp al,'0'
	je finChaine
	xor di,di
	jmp repeter
	finChaine :
	mov ah,9
    lea dx,msg6
    int 21h	
	xor di,di
	mov cl,nbcmax
	affiChaine :
	mov dl,MotPlusLong[di]
	cmp dl,'0'
	je fintot
	inc di
	mov ah,2
	int 21h
	jmp affichaine
	fintot :
endm
jeudi 25 novembre 2010 à 14:07:30 | Re : question (affectation d'un caractere)

Guilou34

Salut
Il est très difficile de trouver une erreur à partir d'une source, surtout lorsqu'elle n'est pas documentée. Mais il y a tout de même dans ta macro des erreurs qui sautent aux yeux :
mov al,chaine[si] signifie mov al,[chaine]+[si]
c'est à dire mov al offset (chaine)+offset (chaine) alors qu'il suffit de mov al,[si].
Il en va de même pour
mov motlong[di],0 il sufit de mov [di],0
Mais la question qui se pose c'est pourquoi ne
pas utiliser Debug? Ceci vaut d'ailleurs pour la plupart des messages sur ce site.
Amicalement

vendredi 26 novembre 2010 à 23:35:12 | Re : question (affectation d'un caractere)

patatalo

Membre Club Administrateur CodeS-SourceS
salut,


Tu as encore oublié d'initialiser tes segments !!!

@++

on peut dire que tu as de la suite dans les idées mais intel 386 en bouquin de chevet et un debugger pour comprendre ce que fais chaque ligne de code me paraît être un bonne idée.

@++
vendredi 26 novembre 2010 à 23:41:50 | Re : question (affectation d'un caractere)

patatalo

Membre Club Administrateur CodeS-SourceS
* .MODEL SMALL

* .STACK

* .DATA

* MESSAGE DB &quot;HELLO EVERYBODY! I AM LEARNING ASSEMBLY LANGUAGE!&quot;,&quot;$&quot;

* .CODE

* MAIN PROC

* MOV AX, @DATA

* MOV DS,AX

* MOV AH,09

* LEA DX,MESSAGE

* INT 21H

* MOV AX,4C00H

* INT 21H

* MAIN ENDP

* END MAIN
vendredi 26 novembre 2010 à 23:45:58 | Re : question (affectation d'un caractere)

patatalo

Membre Club Administrateur CodeS-SourceS
en mode réel:

PTR=SEG*16+OFFSET (bon sang d'bois!!!)


Cette discussion est classée dans : caractere, question, mov, char, affectation


Répondre à ce message

Sujets en rapport avec ce message

Question de débutant [ par Laurent1313 ] Voilà je débute avec l'assembleur sous Delphi et il y a un truc que je ne comprends pas. Je voudrais juste savoir quelle est la différence entre :ça : strrev [ par vecchio56 ] Je regarde le fichier strrev.asm qui est utilisé au moins pour les debogages et je remarque que c'est une traduction d'un algorithme écrit en C qui es Chaine [ par RM50Man ] Voila je saisi ma chaine de caractere comme suit:mov ah, 0chmov al,  0ahmov dx, offset bufferint 21h mov ah, 09hmov dx, offset bufferint 21het ensuite couleur en TASM ? [ par redwings ] j'aimerai savoir les instructions qui permettent d'affiche un caractere en couleurAL contient le caractere ...MOV DL,AL MOV AH,02hINT 21h...merci afficher une chaine de caractere dans le sens inverse [ par Orlyn ] Bonjour, Je suis depsuis hier aprem sur un prog et ca fait des heures que je cherche (en changeant le prog et en cherchant sur google et partout) mai question sur le language asm [ par dyroj ] bonjour,j'ai qulque question sur l'asm :-quand je fait un : mov ax, 10 , quesqui va dans le registre (ladresse de 10 dans la ram, ou 10).-pourquoi se CHAINE CARACTERE [ par zeco2 ] AIDE MOI SVP POUR QUE CE PROGRAMME ARRETE DE SAISI LA CHAINE SI ON TAPEZ SUR LE CARACTERE '#' title chaine caractére .386 .model small .stack 100h chaine de caractères [ par jijij ] salut, je veux écrire un programme capable de saisir une chaine de caractères la lecture doit s'arreter à la rencontre du "#" code: Title chaine .mode Saisie & Calcul de sa taille de caractère en tasm [ par baz13shaz ] je veut saisir une chaine de caractère & calculer sa taille,et je veut charger la chaine saisie en mémoire centrale? que doit je faire? comment je peu je bloque!!!! [ par marooh ] bonjour, j'ai ecrit un code assembleur qui compte le nombre des séparateurs dans une chaine saisie,en assemblant tout va bien mais l'execution ne donn


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



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

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