1. Pascal / Говнокод #4252

    +113

    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
    26. 26
    program n1;
    label one, two;
    begin
    asm
    mov bh,1
    mov bl,1
    mov dx,0
    mov ax,0
    one: inc dx
         mov cl,bl
         add bl,bh
         mov bh,cl
         cmp dx,6
         jne one
    
         mov al,bl
    two: inc dx
         mov cl,bl
         add bl,bh
         mov bh,cl
         cmp dx,10
         jne two
    
         add al,bl
         end;
    end.

    Так в КубГТУ на кафедре АПП изучают ассемблер.

    Запостил: xyz, 14 Сентября 2010

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

    • ассемблер на делфях...
      бейсик на php...
      что дальше?..
      Ответить
      • вот так и получаются люди толком не разбирающиеся в асме.
        начинать надо с общего понимания что к чему и потихоньку вникать в тонкости. например Fasm - неплохой минималистичный вариант.
        а не использовать для этого учебный язык Вирта, с глючной средой ботланда или debug.com
        Ответить
        • прозреваю хронический баттхёрт от турбопаскаля =)
          иначе с чего бы обсирать совершенно обычный и примитивный BASM?
          Ответить
          • >>>хронический баттхёрт от турбопаскаля =)
            в точку. и от конторы ботланд.

            будь у меня хоть капелька власти и/или заинтересованности в этом вопросе я бы построил обучение следующим образом.

            1. Архитектура.
            - объяснить что работает и как - хотя бы примерно
            - почему память использовать дольше
            - кеш
            - скорость выполнения разных операций - почему например сдвиги очень быстры, а умножения нет

            2. показать преимущества асма.
            - на асме многие вещи можно сделать короче чем на том ЯВУ что изучали раньше
            - до 10 раз прирост в скорости по сравнению с тем ЯВУ что учили раньше
            - на асме можно делать всякое низкоуровневое

            3. ....
            Ответить
            • на самом деле виноват Вирт :-)

              насколько знаю, вводные по архитектуре даются

              а вот сдвиги на современных процах уже не быстрее, и это на писюках
              Ответить
              • >>вводные по архитектуре даются
                когда я учился архитектура была на джва года позже асма

                >>а вот сдвиги на современных процах уже не быстрее, и это на писюках

                LOL WUT?
                тут поподробнее - пруфлинки, объяснения приветствуются

                это ж что умножение быстрее сдвига получается? ))
                Ответить
                • >LOL WUT?
                  (был в отъезде)
                  щас побью тебя твоим же любимым низкоуровневым стаффом:
                  на современных суперскалярных процах одно (а можно и два независимых) целочисленное умножение выполняется 1 такт, такая же арифметика сдвигом - минимум 1 такт плюс сложение. операции не независимы и преимущества конвейера не используются. типа вероятность нечетного множителя = 0,5 т.е. в среднем будет 1,5 такта. еще можно посчитать сколько займет разложение операнда на множители, но мне лень :)

                  >когда я учился архитектура была на джва года позже асма
                  не знаю, я неск. лет назад просвещал сиськи касательно селекторов, дна памяти итд. кстати - Джойдейн: практические задачи на уровне железа, ОС и ЯВУ
                  Ответить
                  • таки в гоогле первой ссылкой - http://www.informit.com/articles/article.aspx?p=1390173
                    Ответить
            • тащемто есть отличная книжка человека по имени Кип Р Ирвин.
              Он там сначала рассказывает общую архитектуру, и тока потом асм
              Ответить
    • А результат работы программы смотрим в дебугере?
      Ответить
      • результат экстраполируется сразу в мозг
        Ответить
        • Вспомнил реальный случай. Преподаватель студенту: «Ваша программа не работает. Я, пока в метро ехал, в уме её оттрассировал. Она неправильно считает». Палить препода не буду, он в РАН работает. Нанотехнологии, блин. Нанотехнологии я упомянул не всуе. Его отдел на них гранты получал.
          Ответить
          • это в сторону положительных качеств общественного транспорта?
            Ответить
            • Ещё бы! Если бы он вёл машину, было бы не до трассировки.
              Ответить
          • Так препод прав оказался? Если да, то он крутой.
            Ответить
            • Хотелось бы верить в силу его способностей, но увы. Программа на компьютере работала не так, как он предсказал. Может быть, это был неправильный компьютер?
              Ответить
              • тот компьютер не поддерживал многомерную логику...
                Ответить
              • интересно, глючный FDIV из младших 586 в уме осилит? :)
                Ответить
      • Шутки шуткам, а когда я учил асм (компилировал масмом) то первые несколько программ запускал именно в debug.com.

        а потом добрался до INT 0x10 :)
        Ответить
    • Строчка 2 не нужна.
      Ответить
    • Нормальный способ, для начала пойдёт. Результаты можно через WriteLn() вывести:
      var _ax_: word;
      ...
             mov _ax_, ax
      ...
      writeln('ax = ', _ax_);
      Ответить
    • Ну... с чего-то начинать надо. Желательно с чего-то знакомого и понятного:)
      Ответить
    • Кстати, реализовано с говнецом: лабели объявлены паскальные вместо локальных BASM`овских
      Ответить
    • Кстати, упустил самое важное :(
      вопрос какая специальность, на что направлена.

      Если полужелезячная типа защиты информации, то имеет смысл скорее ассемблер для микроконтроллеров - опять же зачем тогда в паскале? чтобы студенты не пугались?

      Если это что-то типа "программист широкого профиля", то вопросов еще больше.
      почему регистры 16-битные?
      почему паскаль по дос (ну очень сильно похоже)?
      почему нет сравнения с языком высокого уровня, чтобы понимать зачем и когда это нужно?

      Возможен ответ - устаревшие методички, но он меня не устроит.
      По ставке преподаватель должен отработать сколько-то часов за 2 семестра (цифру не помню уже).
      при этом лекции, практики, лабораторные - по отчетности это только 40-50% часов. Остальное - на проверку практических занятий, на ведение курсовых и дипломных работ - это все еще процентов 30-40%. ну и остаток - подготовка к лекциям, причем 1 пара лекции = 1 часу подготовки, если материал прошлогодний и = 3 часа, если новый.
      Проценты могут отличаться, у меня за мою более чем скромную практику работы преподом было так.
      понятно что лучше указать 3 часа на разработку "нового" материала, а на деле поправить только чуть-чуть.
      ЗЫ. много добросовестных, но мы обычно хорошо замечаем только негатив...

      ИМХО скорее всего причина в таком подходе - на чистом асме будет многабукв...
      Ответить
      • начинать обучение асму надо с 16ти разрядных программ.
        Иначе как рассказать про интерфейс биос, например?
        Ответить
        • если железячники, то да, обязательно.
          если разработчики ПО - лучше сразу 32. При необходимости 16 смогут изучить сами.
          с другой стороны это не особенно важно, т.к. основную задачу курс обучения выполняет.
          Принципы уяснят, а дальше сами - так все обучение построено.
          Ответить
          • Не особенно важно это ещё потому, что чаще ассемблер используется именно как вставка в программу на языке высокого уровня. Кстати, код вполне скомпилится как 32-разрядный, с переопределением размера операнда (компилятор добавит 66h к каждой команде).
            Ответить
          • 32х разрядный режим процессора очень сложен: всякие кольца защиты, эксепшены, фолты, виртуальный x86, страничная адресация, виртуальная память, свап (хотя они строго говоря не являются обязательными), но всё равно новичку это трудно охватить.

            А в 16ти разрядах все просто, особенно при моделях памяти типа tiny (или как там когда один сегмент на всё про всё).

            Научить студента работать с голым биосом и 16ти разрядным процом -- не сложно, и это поможет ему "почуствовать" компьютер, понять что такое куча и стек и это очень полезно имхо
            Ответить
    • ASM и Delphi. Вместе веселее
      Ответить

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