【发布时间】:2022-10-06 06:09:37
【问题描述】:
我正在自学组装。我想找到偶数的总和。但是,它不起作用,我不明白为什么,它没有显示任何错误。
我的代码在下面
mov ebx, 0;
mov ESI, [arr];
mov ECX, [arr_size];
sumeven:
push ebx;
mov eax, dword ptr[ESI];
mov ebx, 2;
cdq
idiv ebx;
cmp edx, 0;
je adding;
adding:
pop ebx;
add ebx, dword ptr[ESI];
add ESI, 4;
loop sumeven;
mov result, ebx;
我在 c 语言中使用内联汇编。
-
无论如何,您的代码都会落入
adding。 -
为什么? 1%2=1 为什么会掉在那里?
-
您认为
je之后会发生什么? cpu 继续下一行。因此,无论哪种情况,您最终都会到达adding。 -
谢谢我修好了。
-
使用
idiv来检查是否可被 2 整除是不常见的,在实际代码中不会这样做。该程序集的性能不如类似的 C 代码。我希望你知道。
标签: assembly x86 inline-assembly