我正在尝试解决这个问题:
假设您在eax,ebx,ecx中获得了值.编写在所有寄存器中添加值的代码,并将最终结果存储在edx中.
我的代码:
mov eax,3
mov ebx,4
mov ecx,1
add edx,eax
add edx,ebx
add edx,ecx
Run Code Online (Sandbox Code Playgroud)
我是否必须初始化寄存器edx(mov edx,0)?
我是否必须初始化寄存器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
Run Code Online (Sandbox Code Playgroud)
或者,减少一条指令:
lea edx,[eax + ebx] ; edx = eax + ebx
add edx,ecx ; edx += ecx
Run Code Online (Sandbox Code Playgroud)