如何使汇编程序在 5 个斐波那契输出后调用新行
How to make assembly program call new line after 5 outputs of fibonacci
所以我的任务是让用户输入一些要打印的斐波那契项,然后程序会按顺序打印出来。但是,它还要求在打印五个术语后换行。另一个要求是必须在计算斐波那契数的循环中使用 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
您需要在 new_line 之前使用跳转指令来绕过 new_line 代码:
; ...
call WriteString
loop print_loop
jmp short done
new_line:
call crlf
loop print_loop
done:
; ...
所以我的任务是让用户输入一些要打印的斐波那契项,然后程序会按顺序打印出来。但是,它还要求在打印五个术语后换行。另一个要求是必须在计算斐波那契数的循环中使用 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
您需要在 new_line 之前使用跳转指令来绕过 new_line 代码:
; ...
call WriteString
loop print_loop
jmp short done
new_line:
call crlf
loop print_loop
done:
; ...