Мне кажется, что проблема здесь в вычислении последовательности Фибоначчи. Ваш код для этого оставляет меня несколько ... озадаченным. У вас есть куча «вещей», которые, кажется, не имеют ничего общего с вычислением чисел Фибоначчи (например, reg
), и другие, которые могут, но кажется, что вы действительно не знаете, что пытаетесь сделать с ними.
Глядя на ваш цикл для вычисления последовательности, первое, что практически бросается в глаза, это то, что вы используете память лот . Одна из первых (и наиболее важных) вещей, когда вы пишете на ассемблере, - это максимальное использование регистров и минимизация использования памяти.
Как подсказка, я думаю, что если вы прочитаете что-нибудь из памяти в курсе, если вычисляете последовательность, вы, вероятно, делаете ошибку. Вы должны иметь возможность выполнять все вычисления в регистрах, поэтому единственными ссылками в памяти будут записи результатов. Поскольку вы (очевидно) производите только результаты размером в байты, вам нужен только один массив с соответствующим количеством байтов для хранения результатов (т. Е. Один байт на число, которое вы собираетесь сгенерировать).
Я испытываю желание написать небольшую подпрограмму, показывающую, как аккуратно это можно адаптировать к языку ассемблера, но я полагаю, что мне, вероятно, не следует этого делать ...