如何打印斐波那契数列(汇编8086)中的前20个元素?

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

我正在尝试编写一个运行循环的代码,该循环打印斐波那契数列中的前 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

有人知道我该怎么做吗?

assembly x86-16 fibonacci emu8086
1个回答
0
投票

取决于我们希望序列如何开始。

甚至斐波那契本人也从 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 组装的简单斐波那契打印机

© www.soinside.com 2019 - 2024. All rights reserved.