我正在尝试编写一个运行循环的代码,该循环打印斐波那契数列中的前 20 个数字,但我不知道如何解决它。我尝试了很多方法。
org 100h
mov ax, 0
mov bx, 1
mov cx, 20
start:
call print_num ; this is function that print the value that inside ax register
PRINTN ; this is print new line
mov dx, ax
add ax, bx
loop start
mov ah, 0
int 16h
ret
include magshimim.inc ; this is a private library
有人知道我该怎么做吗?
甚至斐波那契本人也从 1,2,3,5,8,... 开始他的数列
请参阅维基百科文章https://en.wikipedia.org/wiki/Fibonacci_number
应用@ecm建议的更正后的代码:
org 100h
mov ax, 0
mov bx, 1
mov cx, 20
start:
call print_num
PRINTN
mov dx, ax
add ax, bx
MOV BX, DX
loop start
mov ah, 0
int 16h
ret
include magshimim.inc
它将输出:
0,1,1,2,3,5,8,13,...
有时我们不想从零开始。下一个代码就是这样工作的:
org 100h
mov ax, 1
xor bx, bx
mov cx, 20
start:
call print_num
PRINTN
xchg ax, bx
add ax, bx
loop start
mov ah, 00h ; BIOS.WaitKey
int 16h ; -> AX
ret
include magshimim.inc
它将输出:
1,1,2,3,5,8,13,...
有关此内容的更多信息,请参阅 8086 组装的简单斐波那契打印机