Создать новый поток, генерирующий ряд Фибоначчи из 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

Объяснение кода листинга программы

  1. Установка начального значения переменных: — Переменная ax устанавливается в 1. — Переменная bx устанавливается в 1. — Переменная cx устанавливается в 10.
  2. Вызов функции Fibonachi.
  3. Приостановка выполнения кода и вывод значения ax в шестнадцатеричной системе счисления в буфер обмена.
  4. Установка значения регистра ax в 0 для корректного завершения работы программы.
  5. Ввод значения 10 в регистр cx.
  6. Начало рекурсивного процесса вычисления чисел Фибоначчи: — Переменная dx устанавливается в 0. — Деление значения bx на dx. — Вычитание 1 из значения cx. — Если cx больше или равно 1, то переход к следующему шагу. — Если cx меньше 1, то возврат к шагу 3.
  7. Проверка результата вычисления: — Если результат вычисления равен 0, то переход к шагу 2. — Если результат вычисления не равен 0, то продолжение вычислений.
  8. Возврат значения ax в регистр dx.
  9. Увеличение значения cx на 1.
  10. Если cx больше или равно 1, то переход к шагу 6.
  11. Если cx меньше 1, то возврат к шагу 3.
  12. Вывод значения dx в шестнадцатеричной системе счисления в буфер обмена.
  13. Возврат значения ax в регистр dx.
  14. Установка значения регистра ax в 0 для корректного завершения работы программы.
  15. Ввод значения 10 в регистр cx.
  16. Проверка результата вычисления: — Если результат вычисления равен 0, то переход к шагу 2. — Если результат вычисления не равен 0, то продолжение вычислений.
  17. Возврат значения ax в регистр dx.
  18. Увеличение значения cx на 1.
  19. Если cx больше или равно 1, то переход к шагу 6.
  20. Если cx меньше 1, то возврат к шагу 3.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы