在大学里,我们开始学习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
在此之后,我只是不知道该怎么做或者是否有任何错误。任何人都可以给我建议我接下来需要做什么吗?
答案 0 :(得分:1)
Here是PDF手册,其中包含实现用户输入和输出所需的一些代码示例。
下面是一段未经测试的代码,可让您了解如何在不递归的情况下计算Fibonacci序列。
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位。
答案 1 :(得分:-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