我试图解决这个问题:
假设您在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)?
答案 0 :(得分:7)
我是否必须初始化寄存器edx(mov edx,0)?
编写代码的方式需要在第一个edx
之前清除add
,mov edx, 0
或xor 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