首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在TASM组件中打印fibonacci数

在TASM组件中打印fibonacci数
EN

Stack Overflow用户
提问于 2014-10-14 15:38:35
回答 2查看 3.9K关注 0票数 0

在大学里,我们开始学习TASM汇编语言。关键是,我需要帮助,因为我完全迷失了我的任务。我需要从键盘上扫描一个数字然后打印斐波纳契的n个号码。你输入6,程序打印出8。

以下是我未完成的代码:

代码语言:javascript
运行
复制
.model small
.stack 100h

.data 
    number db 255

.code
start:
    mov dx, @data
    mov ds, dx
    mov al, 0
    mov bl, 1

.readline:
    mov ah, 0Ah
    mov dx, offset number
    mov cx, dx;
    int 21h

.fibonacci:
    add al, bl
    mov dl, al
    mov al, bl
    mov bl, dl

    loop .fibonacci
    int 21h
.writeln
    mov ah, 9
    mov dx, dl
    int 21h


end start   

在此之后,我不知道该做什么,也不知道是否犯了什么错误。有人能给我建议我下一步该做什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-14 16:36:18

这里是一个PDF手册,包含实现用户输入和输出所需的一些代码示例。

下面是一段未经测试的代码片段,让您了解如何在不递归的情况下计算Fibonacci序列。

代码语言:javascript
运行
复制
    mov  cx, 6
    mov  ax, 0    ;a = 0
    mov  bx, 1    ;b = 1
fib:
    mov  dx, ax 
    add  dx, bx   ;sum = a + b
    mov  ax, bx   ;a = b
    mov  bx, dx   ;b = sum
    loop fib

请注意,您必须将计数寄存器(CX)设置为给定的用户输入。

请记住,您使用的是32位寄存器,所以您可以在寄存器中存储的最大Fibonacci数是第46位。

票数 1
EN

Stack Overflow用户

发布于 2018-03-10 01:54:55

代码语言:javascript
运行
复制
.MODEL SMALL

.DATA
.CODE
 MAIN PROC

            MOV AX,@DATA
            MOV DX,AX

            MOV AL,20
            MOV CL,10
            MOV AH,00
            DIV CL
            MOV DX,AX
            ADD DX,3030h
            MOV AH,02H
            INT 21H

            MOV DL,DH
            INT 21H




            MOV AX,4C00H
            INT 21H

MAIN ENDP
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26364772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档