MASM x86 计算0到1000000之间的奇数斐波那契数列之和

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

我需要制作一个 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
assembly x86 masm fibonacci
© www.soinside.com 2019 - 2024. All rights reserved.