当前位置: 动力学知识库 > 问答 > 编程问答 >

assembly - Moving from a register to a variable x86

问题描述:

I have an array containing sbytes which get get added to each other using the

edx

and

ebp

registers.

The code works fine, except now I am trying to move

ebp

to a variable called total_sum which would hold SWORDs. However, I am not sure how to do that.

The error I'm getting is

error A2022: instruction operands must be the same siz

which I understand to mean that the formats I am trying to convert between are different.

Could someone help point me in the right direction?

Here is the relevant code:

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

网友答案:
mov byte ptr [total_sum], ebp

The variable is declared as a byte, the register is 4 bytes. The assembler is not sure what do you mean - truncate the register, or use four bytes that start at label total_sum.

分享给朋友:
您可能感兴趣的文章:
随机阅读: