[Asm]Cryper une chaine de caractere

Cryper une chaine de caractere [Asm] - ASM - Programmation

Marsh Posté le 19-10-2008 à 19:42:24    

Bonsoir a tous,
 
Voilà je galère sur un TP d'assembleur
 
Je dois réaliser un petit programme qui demande a l'utilisateur d'entrer une chaine de caractère (ca c'est bon), d'inverser cette chaine (ça va toujours)
 
Mais ensuite d'après l'énoncé du prof "PRENDRE LA VALEUR ASCII DE CHAQUE CARACTÈRE DE LA CHAINE ET LUI AJOUTER +4"
 
Et là je ne vois pas comment je peux procéder :/
 
Je sais comment je peux prendre les élément 1 par 1 mais pour leurs ajouter 4 je ne sais pas
 
Merci de m'éclairer  :)  
 
Bonne soirée

Reply

Marsh Posté le 19-10-2008 à 19:42:24   

Reply

Marsh Posté le 20-10-2008 à 08:27:17    

tu realises une addition de 4, il y a une instruction assembleur pour l'addition...


---------------
qwerty-fr
Reply

Marsh Posté le 26-10-2008 à 13:20:54    

Merci pour ta réponse
 
Mais la seule opération que je connaisse pour additionner est "add", ca ne fonctionne pas avec un caractère
 
S'il y en a une autre, pourrais tu me la montrer dans un exemple ?

Reply

Marsh Posté le 26-10-2008 à 13:33:19    

Code :
  1. ta_chaine db 'toto',0
  2. ...
  3. add [ta_chaine+2], 4 ; ajoute 4 au code ascii du 3eme caractere


 
edit: peut-etre que ton assembleur va refuser le add sur la variable directement, dans ce cas commence par charger l'adresse dans un registre


Message édité par antsite le 26-10-2008 à 13:36:42
Reply

Marsh Posté le 26-10-2008 à 17:18:44    

kal747 a écrit :

Merci pour ta réponse
 
Mais la seule opération que je connaisse pour additionner est "add", ca ne fonctionne pas avec un caractère
 
S'il y en a une autre, pourrais tu me la montrer dans un exemple ?


c'est quoi comme assembleur ? un caractère c'est généralement une valeur sur 8 bits, si ton processeur ne sait pas additionner une valeur de 8 bits alors i faut d'abord charger ton caractère dans un registre plus grand.

Reply

Marsh Posté le 26-10-2008 à 21:36:44    

Hum je ne pense pas que j'utilise la meme version que ce que vous dites
Je débute en assembleur :s
 
Je sais qu'a mon IUT, on a une librairie qui s'appel IUTinfo.inc
 
Je vous montre comment j'inverse le mot deja :
 
INCLUDE IUTInfo.inc
 
.data
 
msg  BYTE  "mot a crypter",0
 
 
 
.code
 
main       PROC
           call   Clrscr
           mov ecx,sizeof msg
    sub ecx,1
           mov esi,0
bcl:
           mov al,msg[esi]
           push eax
           inc esi
           loop bcl
 
           mov ecx,sizeof msg
    sub ecx,1
bcl1:
           pop eax
           call writechar
           loop bcl1
           exit
main       ENDP
END        main
 
(Writechar est dans la librairie, cela sert a afficher à l'ecran ce qui est contenu dans eax)
 
Donc pour ajouter 4 a chaque caractère, avant d'affichier, je doit affaire add eax,4 ?  
 
(Je viens de tester, en effet ca fonctionne) je vous remercie pour votre aide
 
Bonne soirée

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed