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