从寄存器移动到变量x86

时间:2016-11-15 20:51:27

标签: assembly x86 cpu-registers irvine32

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

相互添加
  

edx

  

ebp

寄存器。

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

  

ebp

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

我得到的错误是

  

错误A2022:指令操作数必须相同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

1 个答案:

答案 0 :(得分:0)

mov byte ptr [total_sum], ebp

变量声明为一个字节,寄存器为4个字节。汇编程序不确定你是什么意思 - 截断寄存器,或使用从标签total_sum开始的四个字节。