我需要制作一个 masm 程序,将 0 到 1000000 之间的斐波那契数列的所有奇数相加。以下代码是我目前所有的代码。当我进入调试并查看存储总和的 ecx 寄存器时,看起来它没有正确添加它们。 ecx 寄存器中的总和为 1、4、9 等,但应为 1、2、5、10、23 等。最终结果应为 1089154。当我尝试在终端中打印总和时,它会打印“+1000000”这是不对的。请帮忙!
.386
.model flat, stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD
INCLUDE irvine32.inc
.data
first_num DWORD 0
second_num DWORD 1
odd_sum DWORD 0
.code
main PROC
mov eax, 0
mov ebx, 1
mov ecx, 0
fibonacci_loop:
add eax, ebx
test eax, 1
jz skip_add
add ecx, eax
skip_add:
cmp eax, 1000000
jl fibonacci_loop
mov odd_sum, ecx
call writeint
INVOKE ExitProcess, 0
main ENDP
END main