1. Assembler / Говнокод #24779

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    .def temp = r16
    .def rr1 = r17
    .org 0
    Ldi r16, low(RAMEND)
    out SPL, temp
    Ldi r16 high(RANEND)
    out SPH, temp
    
    rjmp start
    start:
    ldi temp,255
    out DDRB, temp
    out PORTB,temp
    rcall delay
    Ldi temp,0x00
    out PORTB,temp
    Rcall delay
    rjmp start
    
    delay:
    ldi rr1, 0xFF
    Pdelay:
    Dec rr1
    brne Pdrlay
    ret

    Почему микроконтроллер не мигает лампочка?
    Но студия не ругается
    (Ассемблер АVR)

    Запостил: Arduino, 17 Сентября 2018

    Комментарии (42) RSS

    • Переведи на "PHP".
      Ответить
    • > RAMEND
      > RANEND

      > Pdelay
      > Pdrlay

      Так и должно быть или здесь опубликовано с помехами?
      Ответить
      • > RAMEND
        > RANEND
        > Pdelay
        > Pdrlay
        Так и должно быть или здесь опубликовано с помехами?


        https://youtu.be/_PhwLv6CHAQ?t=1454
        Ответить
        • K0ZA KOAZ KZAO
          Да это же вореции!
          Ответить
        • В фильме за компьютером TarasB?
          Ответить
        • Успел прочитать: "MAM SVUJ PROGRAM JAKYSI INO. ZACHARIAS MI NEBUDE ROZKAZOVAT". И ещё: "NEMATE PRAVO TO CIST!"

          Это восстание машин?
          Ответить
    • > ramend
      Демон доширака?
      Ответить
    • Задержка в 255 итераций не маловата? Тактовая же поди не меньше мегагерца. Диод может и моргает, но где-нибудь в килогерцовом диапазоне где ты глазами явно ничего не заметишь.
      Ответить
      • Надо всунуть в цикл какунить медленную операцию. Какие там в авр медленные операции есть?
        Ответить
        • Впизду калиброванные циклы. Там таймеров дохера.
          Ответить
          • Борланд уже обжёгся о калиброванные циклы. Когда появились процессоры быстрее 400 МГц, пришлось патчить всё говно, слинкованное с модулем CRT из библиотеки Трубопаскаля.
            Ответить
            • А я обжёгся о борланд... Совпадение?
              Ответить
              • Не думаю. Именно поэтому я за "PHP": пэхапэшники никогда не думают.
                Ответить
            • Мой Runtime 200, ах
              спасибо что вернул мне детство
              Ответить
              • ┌────────┤ QuickView ver 2.90.01 ├┐
                │                                 │
                │      ▀▀▀▀▀\    ▀▀▀▀▀\    ▀▀▀▀▀\ │
                │    ▀▀\   ▀▀\ ▀▀\   ▀▀\ ▀▀\   ▀▀\│
                │   ▀▀▀▀▀▀▀▀\ ▀▀\ ▀▀\   ▀▀\       │
                │  ▀▀\   ▀▀\ ▀▀\   ▀▀\ ▀▀\   ▀▀\  │
                │ ▀▀\   ▀▀\   ▀▀▀▀▀\    ▀▀▀▀▀\    │
                │         Quick View System       │
                │         ~~~~~~~~~~~~~~~~~       │
                │■ Просмотр, программируемая обра-│
                │  ботка и ручное редактирование  │
                │  файлов, логических и физических│
                │  дисков, а также 1 Mb памяти в  │
                │  режимах Text/Hex/Asm           │
                │■ Встроенная поддержка кодировок │
                │  Alt/Win/KOI, а также поддержка │
                │  до 4-х кодировок пользователя  │
                │■ Поддержка различных LineFeed   │
                │■ Поддержка разбора содержимого  │
                │  'MZ','PE','NE','LE','LX' файлов│
                │■ Просмотр boot record,MBR дисков│
                │■ Встроенный дизассемблер i486/87│
                │■ Встроенный ассемблер i486      │
                │■ Трассировка переходов jmp/...  │
                │■ Комментирование файла в AV     │
                │■ Все операции с блоками         │
                │■ Поддержка .CRK файлов          │
                │■ Встроенный калькулятор         │
                │■ Поддержка многозадачных ОС     │
                │    ░▒▓█ и многое другое █▓▒░    │
                └───────────────────────24.08.99──┘


                Вернул тебе твой 99-й, проверь.
                Ответить
                • Спасибо, предпочитаю лексикон или мультиэдит
                  Ответить
                  • А помните ещё «Слово и дело»?
                    Ответить
                    • keyrus, vc, mscdex
                      Ответить
                      • Keyrus был не нужен с тех пор, как в DOS появились команды MODE и KEYB.
                        Ответить
                        • загруженные в память драйвер клавиатуры и кодировка CP866 весили больше чем кейрус и переключались по-дурацки
                          Ответить
                          • Загрузил свой драйвер в твоё адресное пространство и оставил там небольшую часть себя, проверь?
                            Ответить
      • Затупил. И получился говнокод
        Ответить
    • Ничего не понимаю. Переведи в опкоды для x86.
      Ответить
      • Перевёл на x86, проверь:
        temp EQU ax
        rr1 EQU cx
        .org 0
        mov temp, low(RAMEND)
        out SPL, temp
        mov temp, high(RANEND)
        out SPH, temp
        
        jmp start
        start:
        mov temp,255
        out DDRB, temp
        out PORTB,temp
        call delay
        mov temp,0x00
        out PORTB,temp
        call delay
        jmp start
        
        delay:
        mov rr1, 0xFF
        Pdelay:
        dec rr1
        jne Pdelay
        ret
        Ответить
        • Теперь светодиод стал мигать ещё в тысячу раз быстрее...
          Ответить
        • А теперь переведи в опкоды, набранные только ASCII-кодами.
          Ответить
        • Ничего не понимаю. Переведи на «OCaml»
          https://www.youtube.com/watch?v=X1cgRXhpQLY
          Ответить
        • Переведи на Verilog
          Ответить
          • А мне - на "PHP" (уже второй раз пытаюсь доораться).
            Ответить
          • Вечером переведу.
            Ответить
          • module blink(
                input reset,
                input clock,
                output reg[7:0] ddrb,
                output reg[7:0] portb
            );
            
            reg[7:0] rr1;
            
            always @(reset or posedge clock) begin
                if (reset) begin
                    ddrb <= 8'hFF;
                    portb <= 0;
                    rr1 <= 8'hFF;
                end else if (rr1 != 0) begin
                    rr1 <= rr1 - 1;
                end else begin
                    rr1 <= 8'hFF;
                    portb <= ~portb;
                end
            end
            
            endmodule
            Ответить
    • > rjmp start
      > start:
      Как такое можно напесать?
      Ответить
      • В ассемблерных программах с I/O это норма. Нужно подождать хотя бы пару тактов после вывода в порт, иначе железка может не успеть отработать команду.
        Ответить
        • P.S. На x86 модно было писать так:
          out dx, al
          jmp short $+2

          Считалось, что просто nop не обеспечит нужную задержку.
          Ответить
          • Дык там этот out на целую микросекунду виснет, емнип.
            Ответить
            • На машинах с шиной ISA выполнение команд висло до тех пор, пока все железки не отпустят низкий уровень с вывода READY. Т. е. железка могла вообще заблочить процессор, а могла наоборот, быстро отпустить шину (чтобы никого не задерживать), а запрос не обработать, если за out идёт следующий out или если за in идёт использование результата. Или я что-то путаю?
              Ответить
              • Я тоже такое помню. Там вроде еще было такое правило что если ты слишком долго не отпускаешь этот сигнал то вся шина стоит раком, и у тебя во-первых собьется рефреш памяти (контроллер помяти юзал ISA для переодического перечитывания RAM) а во-вторых время собьется.
                Ответить
    • Notice: Undefined offset: 0 in /var/www/vhosts/guestinh_96852_0.lh.parking.ru/httpdocs/wp-includes/class-wp-query.php on line 3149
      Ответить

    Добавить комментарий