Создать новый поток, генерирующий ряд Фибоначчи из 10-ти членов, используя рекурсивный алгоритм - Assembler
Формулировка задачи:
Написать программу, которая создает новый поток, что генерирует ряд Фибоначи с 10-ти членов, используя рекурсивный алгоритм.
Решение задачи: «Создать новый поток, генерирующий ряд Фибоначчи из 10-ти членов, используя рекурсивный алгоритм»
textual
Листинг программы
model tiny .code org 100h start: mov ax,1 mov bx,1 mov cx,10 call Fibonachi xor ax,ax int 16h ret Fibonachi: add bx,ax xchg ax,bx push ax push bx push cx mov bx,10 xor cx,cx @@1: xor dx,dx div bx push dx inc cx or ax,ax jnz @@1 @@2: pop ax or ax,'0' int 29h loop @@2 mov al,' ' int 29h pop cx pop bx pop ax dec cx jz @@3 call Fibonachi @@3: ret end start
Объяснение кода листинга программы
- Установка начального значения переменных:
— Переменная
ax
устанавливается в 1. — Переменнаяbx
устанавливается в 1. — Переменнаяcx
устанавливается в 10. - Вызов функции
Fibonachi
. - Приостановка выполнения кода и вывод значения
ax
в шестнадцатеричной системе счисления в буфер обмена. - Установка значения регистра
ax
в 0 для корректного завершения работы программы. - Ввод значения 10 в регистр
cx
. - Начало рекурсивного процесса вычисления чисел Фибоначчи:
— Переменная
dx
устанавливается в 0. — Деление значенияbx
наdx
. — Вычитание 1 из значенияcx
. — Еслиcx
больше или равно 1, то переход к следующему шагу. — Еслиcx
меньше 1, то возврат к шагу 3. - Проверка результата вычисления: — Если результат вычисления равен 0, то переход к шагу 2. — Если результат вычисления не равен 0, то продолжение вычислений.
- Возврат значения
ax
в регистрdx
. - Увеличение значения
cx
на 1. - Если
cx
больше или равно 1, то переход к шагу 6. - Если
cx
меньше 1, то возврат к шагу 3. - Вывод значения
dx
в шестнадцатеричной системе счисления в буфер обмена. - Возврат значения
ax
в регистрdx
. - Установка значения регистра
ax
в 0 для корректного завершения работы программы. - Ввод значения 10 в регистр
cx
. - Проверка результата вычисления: — Если результат вычисления равен 0, то переход к шагу 2. — Если результат вычисления не равен 0, то продолжение вычислений.
- Возврат значения
ax
в регистрdx
. - Увеличение значения
cx
на 1. - Если
cx
больше или равно 1, то переход к шагу 6. - Если
cx
меньше 1, то возврат к шагу 3.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д