Справочник по Ассемблеру

       

Главы из книги будут строиться следующим образом:


  • ответы на часто задаваемые вопросы;
  • дополнения ваших заметок, примеров, алгоритмов и пр.
  • объяснение новой темы;
  • примеры программ на Ассемблере.
  • Вы уже сможете самостоятельно написать простую программу после прочтения Главы 1. Я надеюсь, что изучать язык будет интересней, если мы сразу перейдем к практической части, изучая параллельно теорию. Попутно отмечу, что данная книга рассчитана, как правило, на людей, которые ни разу не писали программы ни на Ассемблере, ни на каком-либо ином языке программирования. Конечно, если Вы уже знакомы с Basic, Pascal, C или каким-либо иным языком, то это только на пользу Вам. Тем не менее, все новые термины будут подробно объясняться.

    Не сомневаюсь, что среди читателей есть люди, которые уже имеют небольшой опыт программирования на Ассемблере. Для них я специально буду отводить место в книге под названием "Раздел для имеющих опыт программирования", в котором, надеюсь, они найдут много полезного для себя. Ну и, конечно, я могу допустить ошибки. Поэтому большая просьба: если кто-то заметит ошибку (недоработку, упущение и т.п.) в моих программах либо неточности в тексте, прошу сообщить мне об этом. Буду очень благодарен.

    Зачем нужен Ассемблер? Что он может делать, что не сможет сделать любой другой язык?

    Плюсы:

  • Программа, написанная на Ассемблере, максимально быстро работает (в 50-200 раз быстрее Бейсика и в 3-20 раз быстрее С++)
  • Код программы максимально компактен
  • Позволяет сделать то, что ни один язык высокого уровня не способен сделать
  • Минусы:

  • Больше времени затрачивается на написание программы
  • Код длиннее, чем в других языках
  • Сложнее любых других языков
  • В дальнейшем вы поймете, что стоит один раз написать процедуры (например, вывод рамки на экран, получение строки символов и пр.), а затем вызывать их из других программ, то в итоге, времени у вас займет не настолько больше, чем писать, например, на Паскале.

    Наибольший эффект (я бы сказал, оптимальный вариант) достигается при комбинировании двух языков: Pascal+Assembler или C+Assembler. Это особенно становится актуальным при программировании под Windows.

    Многие мне возразят: зачем, мол, учитывать скорость, считать такты, оптимизировать программы, уменьшать код, если и так большинство людей используют Pentium-200 (32Мб / 6Гб) и выше, где плюс-минус 1000 тактов на глаз не заметно?

    Вот, что я могу сказать. Дома у меня, к сожалению, пока стоит 486DX2-80. Программа WinAmp (кажется, такое название) не успевает проигрывать MP3-файлы (задержки большие). Но другая программа (Xing Mpeg) воспроизводит их прекрасно! Алгоритмы разные. В любом случае хочется, чтобы ваша любимая игра или программа работала быстрее...




    Что конкретно будем изучать?

    Я считаю целесообразным начинать обучение с программирования на Ассемблере под DOS (Том I данной книги). После этого перейдем к Windows (Том II).

    Рассмотрим подробно:

  • двоичную и шестнадцатеричную системы счисления (это не совсем интересно, но надо в обязательном порядке);


  • команды процессоров 8086, 80286, 80386, 80486 и Pentium;


  • сопроцессор;


  • сегментацию памяти;


  • XMS/EMS память;


  • работу видеобуфера;


  • VGA/SVGA-режимы;


  • клавиатуру;


  • работу с дисками, каталогами и файлами (как с короткими именами, так и с длинными);


  • FAT


  • порты ввода-вывода;


  • CMOS-микросхему;


  • BIOS


  • принтер;


  • модем;


  • научимся оптимизировать программы;


  • и многое-многое другое.


  • Не обойдем стороной и технический английский язык, т.к. операторы Ассемблера - это сокращения английских слов.


    Содержание раздела