因此,我的任务是让用户输入一些斐波那契术语进行打印,然后程序会按顺序打印出来。但是,它还要求在打印五个术语后有一个新行。另一个要求是在计算斐波那契数的循环中必须使用masm " loop“指令。我如何在没有无限循环的情况下实现这一点?这就是我现在所拥有的。它可以很好地计算斐波纳契数,但当我尝试添加新行时不会:
.data
fib_count DWORD ?
num1 DWORD 0
num2 DWORD 1
sum DWORD 0
counter DWORD 0
spaces BYTE " ",0
.code
main PROC
;Display fibonacci
mov ecx, fib_count ;fib_count is the number of terms the user entered
;printing first 1
mov eax, 1
call WriteDec
mov edx, OFFSET spaces
call WriteString
dec ecx
print_loop:
mov eax, num1
add eax, num2
mov sum, eax
mov eax, num2
mov num1,eax
mov eax, sum
mov num2,eax
mov eax, sum
call WriteDec
inc counter
mov eax, counter
cmp eax, 5
je new_line
mov edx, OFFSET spaces
call WriteString
loop print_loop
new_line:
call crlf
loop print_loop发布于 2017-01-31 14:46:52
您需要在new_line之前使用一个跳转指令来遍历new_line代码:
; ...
call WriteString
loop print_loop
jmp short done
new_line:
call crlf
loop print_loop
done:
; ...https://stackoverflow.com/questions/41951191
复制相似问题