2016-11-15 4 views
0

je un tableau contenant sbytes qui se sont ajoutés les uns aux autres à l'aide duLe passage d'un registre à un x86 variables

EDX

et

ebp

registres.

Le code fonctionne très bien, sauf que maintenant je suis en train de se déplacer

ebp

à une variable appelée total_sum qui détiendrait Swords. Cependant, je ne suis pas sûr de savoir comment faire cela.

L'erreur que je reçois est

erreur A2022: opérandes d'instruction doivent être les mêmes SIZ

que je comprends à dire que les formats que je suis en train de convertir entre sont différents.

Quelqu'un pourrait m'aider à me diriger dans la bonne direction?

Voici le code correspondant:

mov esi, OFFSET array 
mov ecx, LENGTHOF array 
mov total_sum, 0 
mov ebp,0 

L1: 
movsx edx, byte ptr [esi] 
add ebp, edx 
inc esi 
loop L1 

mov eax, ebp 
call WriteInt 
call Crlf 

mov [total_sum], ebp 

Répondre

0
mov byte ptr [total_sum], ebp 

La variable est déclarée comme un octet, le registre est de 4 octets. L'assembleur n'est pas sûr de ce que vous voulez dire - tronquer le registre, ou utiliser quatre octets qui commencent à label total_sum.

+0

Est-ce tout ce qui doit être fait? J'ai essayé et le problème est resté. –

+0

Ensuite, déclarez la variable en tant que DWORD et supprimez le "byte ptr". –

+0

Y a-t-il un moyen de le garder comme une épée? –