Небольшой вопрос по вычислению 12 чисел Фибоначчи - Assembler

Узнай цену своей работы

Формулировка задачи:

Задание следующее: Напишите программу для вычисления 12 чисел Фибоначчи: 1,1,2,3,5,8,13,...(каждое число в последовательности представляет собой сумму двух предыдущих чисел). Для организации цикла используйте команду LOOP. Вот я нашел основной отрывок кода этой программы
 
        mov     ax,1
        mov     dx,1
        mov     cx,10d
.l1:    add     ax,dx
        xchg    ax,dx
;;в dx следующее число, его можно сохранять/выводить
        loop    .l1
Проверьте его пожалуйста и дополните его до полной программы.

Решение задачи: «Небольшой вопрос по вычислению 12 чисел Фибоначчи»

textual
Листинг программы
.286
.model small
.stack 100h
.code
start:  mov ax,@data
    mov ds,ax
    mov es,ax
    mov ax,3
    int 10h
    mov ax,1
    mov bx,ax
    mov cx,12
    mov di, offset array
    mov si,di
cycle1: stosb
    add ax,bx
    xchg ax,bx
    loop cycle1
    mov di,offset buffer
    mov dx,di
    mov cx,12
cycle2: lodsb
    aam
    xchg ah,al
    or ax,'00'
    stosw
    inc di
    loop cycle2
    mov ah,9
    int 21h
    mov ah,0
    int 16h
    mov ah,4Ch
    int 21h
.data
array db 12 dup (?)
buffer db 32 dup (' '),'$'
end start

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

В этом коде выполняется вычисление 12 чисел Фибоначчи и их запись в массив. Затем числа в обратном порядке выводятся на экран. Вот список действий:

  1. Установка начального значения регистра AX равным 3 (переменная ax).
  2. Переход в графический режим (int 10h).
  3. Установка начального значения регистра BX равным 1 (переменная bx).
  4. Установка счётчика циклов на 12 (переменная cx).
  5. Установка начального смещения массива (переменная di) и копирование значения регистра DS в регистр SI.
  6. Цикл по вычислению чисел Фибоначчи (до 12): — Запись в буфер (stosb). — Прибавление значения из регистра BX к значению в регистре AX (add ax, bx). — Обмен значений в регистрах AX и BX (xchg ax, bx).
  7. Установка начального смещения буфера (переменная di) и копирование значения регистра DS в регистр SI.
  8. Цикл по выводу чисел Фибоначчи (до 12): — Чтение числа из буфера (lodsb). — Приведение числа к типу string (aam). — Обмен младшего и старшего битов числа (xchg ah, al). — Проверка на ноль (or ax, '00'). — Запись числа в буфер (stosw). — Инкремент значения регистра DI (inc di).
  9. Вывод строки $ (mov ah, 9; int 21h).
  10. Очистка экрана (mov ah, 0; int 16h).
  11. Ввод строки $ (mov ah, 4Ch; int 21h).

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


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

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

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