J'utilise C et ASM {} dans l'une de nos classes pour terminer un projet assembleur dans lequel nous devons chiffrer une chaîne d'entrée, la transmettre et la déchiffrer.Accès aux membres du tableau dans l'assembleur
La clé est chargée dans un tableau C char vide (20 caractères) et est ensuite utilisée ultérieurement avec l'instruction XOR à chiffrer.
Le code pour charger l'adresse du tableau est:
esi Ica, clé
qui met l'adresse de 'clé' dans esi. L'adresse ici est la même que l'adresse du tableau de clés lorsque nous examinons le registre en mode débogage, donc nous savons que cela fonctionne.
mov edx, [esi]
nous avons pensé que cela déplacerait la valeur de premier indice de esi dans EDX, comme nous utilisons "mov [esi], eax" mettre la valeur de l'un inscrire dans le tableau esi. L'inverse semblait logique.
Cependant, la valeur obtenue par edx est "875575655" (dernière exécution) ou similaire. Beaucoup trop grand pour une valeur de char.
J'ai le sentiment que nous pouvons avoir accès à la mauvaise table, Un conseil serait apprécié.
Remarque: Habituellement, pour augmenter l'indice de tableau, nous utilisons simplement inc esi et ensuite nous lisons comme nous l'avons fait plus haut, c'est ainsi que nous avions l'intention de lire le tableau également.