Преобразование BIN -->BCD

Спойлер
; Функция Fibonacci на ассемблере для ATmega328P
; Вход: r24 - номер числа Фибоначчи (0-24)
; Выход: r25:r24 - значение числа Фибоначчи или 0xFFFF при ошибке
.global fibonacci_asm
fibonacci_asm:
    push r25
    push r30
    push r31
    ; Проверяем, входит ли аргумент в допустимый диапазон
    cpi r24, 25
    brlo .continue ; Продолжаем, если r24 < 25
    ldi r24, 0xFF ; Возвращаем ошибку
    ldi r25, 0xFF
    rjmp .end
.continue:
    ; Проверяем базовые случаи
    cpse r24, __zero_reg__
    rjmp .init_zero
    dec r24
    cpse r24, __zero_reg__
    rjmp .init_one
    ; Вызываем fibonacci_asm(n-1)
    push r24
    dec r24
    call fibonacci_asm
    pop r31
    ; Сохраняем fibonacci_asm(n-1) в r30:r31
    mov r30, r24
    mov r31, r25
    ; Вызываем fibonacci_asm(n-2)
    dec r24
    call fibonacci_asm
    ; Складываем fibonacci_asm(n-1) и fibonacci_asm(n-2)
    add r24, r30
    adc r25, r31
    rjmp .end
.init_zero:
    clr r24
    clr r25
    rjmp .end
.init_one:
    ldi r24, 1
    clr r25
    rjmp .end
.end:
    pop r31
    pop r30
    pop r25
    ret

:wink:

Ну и какие результаты?

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

Тебе нравится клоуном выглядеть? Ты, надеюсь, понимаешь, что тут, на форуме, сидят люди, чья основная профессия связана с теми самыми компиляторами, ассемблерами и иными областями IT, в том числе - преподаватели в этих областях?
Ты, на дилетантском уровне, дискутируешь с нами. Это напоминает цитату из “Собачьего сердца”:

– Вы стоите на самой низшей ступени развития, – перекричал Филипп Филиппович, – вы ещё только формирующееся, слабое в умственном отношении существо, все ваши поступки чисто звериные, и вы в присутствии двух людей с университетским образованием позволяете себе с развязностью совершенно невыносимой подавать какие-то советы космического масштаба и космической же глупости о том, как всё поделить… А в то же время вы наглотались зубного порошку…

Ну так зачем ты стремишься “наглотаться зубного порошку”?
Точно так же я реагирую на своего 84 летнего папеньку, когда он несет подобное:
-Не знаешь точно - спроси, я объясню, что и как. Но уволь меня от твоих представлений о реальности! Те обрывки сведений, которые еще роятся в траченой деменцией памяти, уже не способным прикрыть стыд невежества!

Компилятор МОЖЕТ создать асм-файл. Способ для этого такой: сперва компиляция в эльф, с сохранением отладочной информации, а потом специальная утилита objdump.
В среде Ардуино, можно найти откомпилированный эльф в каталоге сборки, и запустить avr-objdump -S для получения дизассемблера.

Не стоит спорить в предметной области со специалистами. Дети и старики такое делают - дети от глупости, а старики - от самоуверенности, что их былые знания еще хоть как-то актуальны и кому-то нужны.

3 лайка

Ну это уже какая-то дискредитация ассемблера. К тому же у Вас там ошибка.

Это не у меня, это у ИИ

1 лайк

Вспомнился диалог Васи Пупкина с Алисой:

В.П.: как бы ИИ не тужился, а с человеческим интеллектом никогда не сравнится!
Алиса: у тебя телефон стоимостью в три твоих зарплаты, о каком интеллекте речь?

:slight_smile:

6 лайков

Биты конфигурации расположены в отдельной области энергонезависимой памяти. К примеру, МК ATmega328P имеет четыре конфигурационных байта, которые необходимо запрограммировать для корректного функционирования. Один из этих байтов содержит биты блокировки,-называемые локами. То есть это один из четырех байтов, расположенных в отдельном адресном пространстве. Если умеешь записать один из них, значит сможешь и другие.

мне лекбез не нужен. я тебе про эти биты байты, стока рассказать могу.
ты же в своем АСМе инструкции ADD и SUB не путаешь, хотя отличается они только разным набором бит.

1 лайк

А остальным не интересно? Как снять лок, не повредив прошивку, расскажешь им?

Никак. Иначе смыслах теряется.
Ну или корпус пилить, но это уже из разряда промышленного шпионажа / воровства.

А вот интересно - если ИИ кого-то там дискредитирует, кого оштрафуют ?

Дискредитируемого. Ибо нефиг ИИ плохому учить, да еще и про себя (даже если это делал не конкретно он).

Да, и чревато знакомством с УК. Но мы снимать лок не будем.
А вот поставить его из загрузчика иногда бывает нужно и никто не запрещает. И фузы поменять тоже интересно бывает.
Но пишут что низзя. А может быть может быть…?

А УК привели в пример, что-бы бремя доказывания обвинения и опровержения доводов лежало на стороне обвинения? “Молодцом”(с)

Дед, я изначально за тебя, если ты не приписываешь себе чужие заслуги. Но каждый следующий пост разубеждет . Бросай писать хню. Молодость (50+) побеждает.

В УК РФ, к сожалению, не внесли и то что оправдательные доказательства имеют тот же вес, что и обвинительные.

Коллективного бессознательного

И какое все это имеет отношение к Ардуино?

И, все-таки, я возвращаюсь к старому вопросу:

  • приведи пример алгоритма, который может быть записан на Ассемблере, но не может быть записан на ЯВУ. Ну либо может, но крайне неэффективно (с разницей времени исполнения хотя бы 5 раз).

табличные преобразования на ассемблере выполняются за один такт процессора, как сделать аналогичное на C++ и эффективность было бы интересно (x86)

Забудь. XLAT из команд х86 давно выкинули, а на AVR такой команды никада и не было.

1 лайк