此问题已经在这里有了答案:
我正在尝试用斐波那契数列的值填充数组。我遇到问题的那一行是我试图确定所请求的斐波那契数是否为偶数的那一行。诸如模数之类的东西可能有意义。.我一直在网上搜索,无法找到解决方案。同样,如果有人可以在其他地方提供指针,那么我在代码中可能会出错,那么我将不胜感激,但是我毫无疑问还有其他错误。
.386
.model flat, stdcall
.stack 4096
INCLUDE Irvine32.inc
ExitProcess PROTO, dwExitCode: DWORD
.data
array DWORD size DUP 3 (99h)
.code
main PROC
mov eax, 0
mov ecx, 1
L1:
sub ebx, 2
cmp ebx, 0
jz Finish
add eax + ecx
add ecx + eax
LOOP L1
FINISH
;If eax and 1 is false jump to finish even need help here
mov edx, eax
ret
FINISHEVEN
mov edx, ecx
ret
call DumpMem
INVOKE ExitProcess, 0
main ENDP
END main
提示已经在您的注释中:您想查看eax
AND 1是否为零。
您可以做
and eax, 1
jz FINISHEVEN
但是,eax
中的值将是逻辑与的结果,并且根据您的代码,您希望在edx
中具有返回值。因此,您想在此代码之前输入mov edx, eax
。
[另一种方法是使用test
指令,与and
相似,除了它丢弃逻辑AND的结果,使原始寄存器保持不变并且仅设置标志。那你可以做
test eax, 1
jz FINISHEVEN
mov edx, eax
ret