Рекурсия: найти n-ый член последовательности Фибоначчи - Assembler
Формулировка задачи:
Опишите рекурсивную функцию и с помощью этой функции посчитайте n-ый член последовательности Фибоначчи;
Решение задачи: «Рекурсия: найти n-ый член последовательности Фибоначчи»
textual
Листинг программы
LOCALS .model small .stack 1000h .data .code main proc mov ax, @data mov ds, ax mov ax, 10 push ax call Fibb call Show_AX mov ax, 4C00h int 21h main endp Fibb proc N: word push bp mov bp, sp mov ax, N cmp N, 2 ja @@Calc mov ax, 1 pop bp ret 2 @@Calc: push bx mov ax, N dec ax push ax call Fibb mov bx, ax mov ax, N sub ax, 2 push ax call Fibb add ax, bx pop bx pop bp ret 2 Fibb endp ; выводит число из регистра AX на экран ; входные данные: ; ax - число для отображения Show_AX proc push ax push bx push cx push dx push di mov cx, 10 xor di, di ; di - кол. цифр в числе @@Conv: xor dx, dx div cx ; dl = num mod 10 add dl, '0' ; перевод в символьный формат inc di push dx ; складываем в стэк or ax, ax jnz @@Conv ; выводим из стэка на экран @@Show: pop dx ; dl = очередной символ mov ah, 2 ; ah - функция вывода символа на экран int 21h dec di ; повторяем пока di<>0 jnz @@Show pop di pop dx pop cx pop bx pop ax ret Show_AX endp end main
Объяснение кода листинга программы
- Предполагается, что задача программы - вычисление n-го числа Фибоначчи.
- В начале программы переменной
ax
присваивается значение 10, а затем она сохраняется в области данных. - Далее происходит вызов процедуры
Fibb
с аргументомN
. - Если
N
больше 2, то происходит рекурсивный вызов процедурыFibb
с аргументамиN-1
иN-2
. - Если
N
меньше или равно 2, то вax
записывается 1. - После вычисления n-го числа Фибоначчи происходит вызов процедуры
Show_AX
, которая выводит это число на экран. - Процедура
Show_AX
сначала вычисляет количество цифр в числе, затем преобразует число в строку и выводит каждую цифру на экран. - Процедура
Fibb
использует стек для хранения промежуточных результатов. - В конце программы вызывается функция
int 21h
, которая выводит на экран символ, а затем завершает выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д