практический ассемблер

Тема в разделе "WASM.BEGINNERS", создана пользователем chainick, 27 фев 2012.

  1. chainick

    chainick New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2012
    Сообщения:
    61
    Подскажите, где и как практиковаться в программировании на ассемблере. понял - просто сухая теория бесполезна, унылые задачки по программированию, даже олимпиадные - унылы не меньше. графы, списки, стеки, очереди... - УГ. где их практическое применение? подскажите книги, сайты, где качать исходники и пр. полезные обучающие вещи. учиться никогда не поздно... Прошу не предлагать банальных книг, а также книг по структурам данных и алгоритмам, нужно что-то действительно приближенное к реальности. заранее спасибо
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    chainick
    А для чего размещать одинаковые сообщения в разных разделах?
    практический ассемблер
    практика программирования?
    практика
    практический ассемблер
    Нарушение Правила форума WASM пункт 2.5:
     
  3. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Утром в понедельник я не очень добрый. Поэтому скажу так: ваши рассуждения - как раз и есть то самое УГ. Структуры данных и алгоритмы для программиста на ассемблере - вообще наше все. Вот вам задачка 1:

    - сделайте аналог игры "Сокобан". Да, где ящики двигают. Выберите поле разумных размеров, оптимальную кодировку элементов головоломки. Целевая система: DOS, 16 бит. Требования: размер программы +7 уровней не должен превышать 512 байт. Когда сделаете, впихните в этот же размер еще +5 уровней.

    В чем тут фокус? в том, что на ЯВУ вам нужен двумерный массив, очевидно, байтовый. Скажем, 16*16. байтовый массив такого размера - 256 байт. На ассемблере "двумерного" массива не существует. Есть память, в которой вам придется организовать массив, хоть двумерный, хоть трехмерный. На ассемблере вы можете задуматься о хранении исходных уровней, и если элементы кодируете (это в двоичном!) 00 - пусто, 01 - место под ящик, 10 - ящик, 11 - стенка - то 2 бита на элемент достаточно. Упакованный таким образом уровень 16*16 вместо 256 байт будет занимать 64! Но это не предел. Зачем нам хранить лишнее, если реальный уровень уложится в 9*12? Описываем уровни (байт - размер: старшие 4 бита по Х, младшие 4 бита по Y)(байт - начальное положение игрока, аналогично)(X*Y/4 байт упакованный уровень) - и внезапно задача уже не кажется настолько невероятной. А я пока манипулировал только представлением и хранением данных.

    - Вот вам задача 2: сделайте аналог игры "Питон". Он же "Змейка". Змея ползет по экрану, съедает что-то, увеличивается в размерах. Уложитесь в минимальный размер кода и данных. Да, вы расслабились чувствую на 4 гигабайтной плоской памяти, чего тут о структурах данных и ассемблере думать? Заведем массив 10000*10000 двойных слов, чтоб наверняка хватило, и будем туда писать? ню-ню. А с 64 Кб оперативной памяти работать не приходилось? А с 4 Кб? Куда и программа, и данные уровня, и переменные в процессе пишутся, и должно хватить. При чем тут структуры данных? при том, что изгибы змеи - это СПИСОК. При чем тут алгоритмы? при том, что то, что змея съедает, должно появляться на экране случайно. Через случайный период времени в случайном месте. Идем читать про генераторы псевдослучайных?

    - Возьмите предыдущую задачу и сделайте "искусственный интеллект", чтобы змеюка ползала сама. А потом вспомним фильм "Трон" и превратим змею в "световые мотоциклы". Один игрока, остальные с "ИИ". Без дерева для создания этого самого интеллекта вы не обойдетесь.

    про стек вообще молчу. Стек неявно используется вообще везде. Прежде всего для хранения истории возвратов из подпрограмм. Но если нужно прямо конкретный пример - сделайте алгоритм решения "ханойской башни". Он вообще нафиг не сдался, если честно. Ни уму ни сердцу. Но наверно стек пригодится как структура данных.

    Игры не серьезно, из другой области? Ок,

    - программа для моделирования узоров для вышивания крестиком. Минимизировать используемую для хранения узора память. Минимизировать - это именно минимизировать. Если для хранения области 256*256 вы используете 64К - задача провалена. так любой идиот сможет :)) про алгоритмы сжатия читать будем?

    - рассчитать методом Рунге и Кутты 2 порядка решение системы диф-уравнений. Не знаете кто такие Рунге с Куттой? книги по вычислительным методам вас ждут )

    - сделать обход дерева каталогов и вывести на экран имена файлов и папок, до последнего уровня вложения. Текущий каталог без отступа, после вложенного каталога выводить "<dir>" или любой другой признак директории (я не формалист, хотите, ставьте 2 восклицательных знака, хотите, косую черту), и его содержимое с отступом в 4 пробела. Дальше ныряете - отступ еще +4 пробела. Назад возвращаетесь - -4 пробела. И так пока до дна не дойдете, не вернетесь и не перечилите все файлы и каталоги внутри целевого. Что, алгоритмы и структуры данных УГ? Конечно УГ, можете не читать. Вперед, решайте задачку не читая ничего. И исходники чужие тоже на эту тему не смотрите, это и тем более УГ. Время пошло )))
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Mikl___
    Реакция не замедлила воспоследовать.
    В той теме прошу не отвечать, пока она не закрыта.
     
  5. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    x64

    закрывай все - товарисч решил закупить мозга оптом - имхо это достаточно толсто
     
  6. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Rockphorr
    Я пока не вижу тут ярко выраженного троллинга. Посмотрим, что будет дальше.
     
  7. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    x64
    говорить что всякая теория УГ и задавать общие вопросы в спец разделах не трололо ??
    где - за компьютером, ну например дома
    как - скачай пакеты с компиляторами и примеры, пробуй получить сначала тотже результат, потом модифицируй
     
  8. chainick

    chainick New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2012
    Сообщения:
    61
    всем спасибо за ответы
    не все заходят во все разделы, хотелось услышать больше ответов от разных людей
    приношу свои извинения за доставленные неудобства и отнятое время
     
  9. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    chainick
    Есть кнопка и по ней видны твои дубли. Так делать не стоит.
    Asm - язык. Перейдем в плоскость языков человеческого изъяснения.
    Тут твой вопрос звучит так - "где и как практиковаться в французском?"
    Доступная аналогия?
    Лично я , когда влюблюсь, скажу об этом наверное на французском, чтобы было романтичнее.
    Наверное так свои чувства мне удастся передать точнее. )))
    Но чаще для меня легче говорить на русском.

    Теперь подумай и с учетом вышесказанного перефразируй вопрос,
    если тебе действительно нужен ответ.
     
  10. chainick

    chainick New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2012
    Сообщения:
    61
    думал, думал, но так и не понял, о чем вы говорите (ну разве что: французский - ассемблер, русский - ЯВУ, нужно писать на ЯВУ, а когда требуется чего-то особенного - на ассемблере, и практиковаться на ЯВУ, а на основе оного - практиковаться на ассемблере, т.е. это одно и то же, только способ выражения мыслей разный). думаю аналогия с человеческими языками не совсем удачна. они не формализованы
     
  11. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    chainick
    imho - удачная. Знать хотя бы один язык - вот необходимое, но не достаточное,
    условие для успешного изучения остальных. А знание иностранных языков
    сильно расширяет кругозор, и делает чела проницательным..
    Например вот на русском слово "глюк", а на укр. - так почти волшебно - "ма-арево",
    просто околдовывает произношение )))
     
  12. zxcv

    zxcv New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2011
    Сообщения:
    257
    _sheva740
    смертельно. мара - бог(иня) тьмы, сомнений и смерти.
     
  13. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    zxcv
    Вот видите как знание языков делает человека проницательным
    Глюки - опасны!
    )))