Assembleur

Résolu/Fermé
Pusha Messages postés 3 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 10 mars 2014 - Modifié par Pusha le 7/03/2014 à 19:06
Pusha Messages postés 3 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 10 mars 2014 - 10 mars 2014 à 16:41
Bonjour tous le monde , je suis entrain de créer un programme en assembleur , mais tous ne fonctionne pas comme je le désire, en fait le problème c'est que je dois stocker un nombre codé dans un registre , pour pouvoir l'utiliser après.
Voici un bout du prog:


CLO

ORG B0 ; adresse B0

DB "5445525229" ; {donnée cryptée}{(terre)/+/clé ($6C) cryptage(5445525229)}
ORG 04 ; adresse 04
MOV BL,DB


/+/signifie ou exclusif dans mon commentaire
C'est le "5445525229" que je n'arrive pas à faire rentrer dons mon registre BL,

J'utilise le logiciel suivant pour Win32>> http://www.softwareforeducation.com/sms32v50/
avec la Version 5.0 - smz32v50.exe .

Si quelqu'un a une idée pour résoudre ce problème , ça m'aiderai beaucoup =)!

4 réponses

nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
7 mars 2014 à 20:29
Bonjour,

hé bien c'est simple, le registre BL est un registre 8 bits pouvant accepter une valeur comprise entre 0 et 255 (2^8), donc il est trop petit! Le problème c'est que la valeur 5445525229 dépasse également le registre EBX de 32 bits, donc soit il faut passer au registre 64 bits RBX (si possible) soit traiter la valeur comme un tableau d'octets.
0
Pusha Messages postés 3 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 10 mars 2014
Modifié par Pusha le 7/03/2014 à 21:26
Merci nicocorico,
Pas de chance =/ je ne peux pas passer à un registre RBX avec le simulateur ,et je n'ai pas encore vu les tableaux d'octets.
Mais je me suis dis que je devait essayer de rentrer mon mot crypté dans une pile.
j'imagine que là aussi le nb de bits est limité à 32 ce qui fait que je vais encore rencontrer un autre mur puisque par la suite je dois effectuer une opération en ou exclusif et si le code est découpé en binôme l'opération ne pourra pas s'effectuer normalement...=(


ps:En fait le but de mon programme est qu'à partir d'un mot codé , le programme trouve une clé qui permet de décodé mon mot cryptée( pour cela le résultat du XOR ne doit ressortir que des caractères ASCII compris donc entre $41 et $5A) mais avant cette étape j'aimerai tester toutes les clés possible et mettre les résultats dans un seul registre pour pouvoir l'afficher dans un VDU après ;) .
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
7 mars 2014 à 22:22
La pile fonctionne exactement comme toute portion mémoire, avec les mêmes inconvénients. Mais utiliser une variable 64 bits(qword) ne pose normalement pas de soucis au simulateur... et tu peux toujours la récupérer dans deux registres ou laisser le simulateur se débrouiller avec la variable 64bits.
Et à priori vu que c'est du texte, tu devrais tout simplement déclarer une chaîne de caractère, il n'y aura dans doute pas de souci pour l'afficher dans ce cas! Je ne connais pas les limites du simulateur, alors je suppose! Et tu devrais pouvoir forcer l'application du xor sur la chaine en la transtypant.
Sachant aussi que le but étant d'appliquer un xor, tu peux peut-être scinder les mots et la clé en plusieurs parties, eu deux dword par exemple, le traitement se faisant bit par bit tu peux découper les valeurs comme ça t'arrange...
0
Pusha Messages postés 3 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 10 mars 2014
10 mars 2014 à 16:41
YEEESSS ^^ c'était bien çà j'ai scinder la clé et les mots pour pas avoir de soucie pour les opérations et ensuite j'ai mis les résultats dans la pile ou ils seront traités ;)
Merci Nicocorico
0