我应该在x86程序集中初始化寄存器吗?

时间:2015-07-08 09:11:39

标签: assembly x86

我试图解决这个问题:

假设您在eax,ebx,ecx中获得了值。编写添加的代码 所有这些寄存器中的值,并将最终结果存储在edx中。

我的代码:

mov eax,3
mov ebx,4
mov ecx,1
add edx,eax
add edx,ebx
add edx,ecx

我是否必须初始化寄存器edx(mov edx,0)?

1 个答案:

答案 0 :(得分:7)

  

我是否必须初始化寄存器edx(mov edx,0)?

编写代码的方式需要在第一个edx之前清除addmov edx, 0xor edx, edx。但是,您可以将第一个add替换为mov,而不是添加额外的说明:

mov edx,eax   ; edx = eax
add edx,ebx   ; edx += ebx
add edx,ecx   ; edx += ecx

或者,减少一条指令:

lea edx,[eax + ebx]  ; edx = eax + ebx
add edx,ecx          ; edx += ecx