x86程序集:如何测试值是否为偶数? (极度初学者)[重复]

问题描述 投票:0回答:1

我正在尝试用斐波那契数列的值填充数组。我遇到问题的那一行是我试图确定所请求的斐波那契数是否为偶数的那一行。诸如模数之类的东西可能有意义。.我一直在网上搜索,无法找到解决方案。同样,如果有人可以在其他地方提供指针,那么我在代码中可能会出错,那么我将不胜感激,但是我毫无疑问还有其他错误。

.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 
assembly x86 sequence masm fibonacci
1个回答
1
投票

提示已经在您的注释中:您想查看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
© www.soinside.com 2019 - 2024. All rights reserved.