Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在TASM组件中打印斐波那契数_Assembly_Numbers_Fibonacci_Tasm - Fatal编程技术网

Assembly 在TASM组件中打印斐波那契数

Assembly 在TASM组件中打印斐波那契数,assembly,numbers,fibonacci,tasm,Assembly,Numbers,Fibonacci,Tasm,在大学里,我们开始学习TASM汇编语言。关键是,我需要帮助,因为我完全无法完成我的任务。我需要从键盘上扫描一个数字,然后打印斐波那契的n-数字。示例:输入6,程序输出8 以下是我未完成的代码: .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

在大学里,我们开始学习TASM汇编语言。关键是,我需要帮助,因为我完全无法完成我的任务。我需要从键盘上扫描一个数字,然后打印斐波那契的n-数字。示例:输入6,程序输出8

以下是我未完成的代码:

.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   
在这之后,我不知道该怎么办,也不知道是否犯了什么错误。有谁能告诉我下一步需要做什么吗?

是一本PDF手册,其中包含一些实现用户输入和输出所需的代码示例

下面是一段未经测试的代码,让您了解如何在不使用递归的情况下计算斐波那契序列

    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位寄存器,因此您可以存储在寄存器中的最大斐波那契数是46位。

斐波那契的实际计算显然不是OP遇到的问题。这是事实。我参加过同样的讲座,也为同样的任务而奋斗。我提供的PDF文件包含构建最终解决方案所需的所有代码示例(不是英文)。我现在没有访问TASM模拟器的权限,所以我无法修复和测试他的代码。谢谢debes.is的快速回答。我来看看pdf。希望它能帮助我完成我的第一个程序。链接已断开。这似乎是用于打印2位整数的代码。上有一些问题可以用这段代码来回答(加上一些解释它是如何工作的/为什么工作的文本,等等!),但这个问题并不在其中。
.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