在大学里,我们开始学习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
在此之后,我不知道该做什么,也不知道是否犯了什么错误。有人能给我建议我下一步该做什么吗?
发布于 2014-10-14 16:36:18
这里是一个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位寄存器,所以您可以在寄存器中存储的最大Fibonacci数是第46位。
发布于 2018-03-10 01:54:55
.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
https://stackoverflow.com/questions/26364772
复制相似问题