从寄存器移动到变量 x86

Moving from a register to a variable x86

我有一个包含 sbytes 的数组,使用

edx

ebp

注册。

代码工作正常,除了现在我正在尝试移动

ebp

到一个名为 total_sum 的变量,该变量将保存 SWORD。但是,我不确定该怎么做。

我得到的错误是

error A2022: instruction operands must be the same siz

我的理解是我尝试转换的格式不同。

有人能帮我指明正确的方向吗?

相关代码如下:

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

变量声明为字节,寄存器为4字节。汇编程序不确定您的意思 - 截断寄存器,或使用从标签 total_sum.

开始的四个字节