Седов Иван Алексеевич
Рязанский политехнический колледж
ASSEMBLER 8-bit SIMULATOR
Занятие #7: создание процедуры
вычисления чисел Фибоначчи

https://e1m7.github.io/work/
Создание процедуры вычисления числа Фибоначчи заключается в том, чтобы по введенному числу найти число Фибоначчи под этим номером
Для вычисления нового числа нам надо два предыдущих, кроме случая 0,1 и 2 числа (это 0, 1 и 1).
число 0 1 1 2 3 5 8 13 21 34 55 ...
номер 0 1 2 3 4 5 6 7 8 9 10 ...| 3 | 4 | 5 | 6 |
|---|---|---|---|
| A=1 B=1 C=A+B=2 |
A=1 B=2 C=A+B=3 |
A=2 B=3 C=A+B=5 |
A=3 B=5 C=A+B=8 |
| A=B, B=C | A=B, B=C | A=B, B=C | A=B, B=C |
JMP start
start:
MOV A, 8
CALL fibonachi
CALL print_number
HLT
fibonachi:
; input
; A = number
; output
; A = number
PUSH B
PUSH D SUB A, 1 ; A=A-1=8-1=7
MOV D, A ; D=A (7 действий)
MOV A, 1 ; A=1 первое число
MOV B, 1 ; B=1 второе число
.loop95:
CMP D, 0
JE .exit96
; Поиск нового числа: А=A+B
; A=1 | A=A+B=2 | A=1
; B=1 | B=1 | B=2
ADD A, B ; A=A+B=1+1=2
PUSH A ; Сохраним значение А
MOV A, B ; A=B
POP B ; B=сохраненное значение А
DEC D ; D=D-1
JMP .loop95
.exit96:
POP D
POP B
RETЗадача №5
1) Доработать процедуру, чтобы она принимала 0 (ответ 0)
2) Доработать процедуру, чтобы она реагировала на большое число (какое?) и выдавала ответ "слишком большое число"

- print_string
-
print_number
-
print_char
- remainder_division
-
remdiv10
- halt
- string_to_number
- number_to_string
- factorial
- fibonachi
Замечание
В нашем распоряжении есть процедуры:
assembler8_07
By Ivan Sedov
assembler8_07
- 523