Читаем 20 уроков Ассемблера полностью

20 уроков Ассемблера

Уроки Ассемблера x86 под DOS от основ до создания антивируса. Основной упор автор делает на быстрое изучение языка и конкретные примеры. Рекомендуется всем, кто хочет быстро изучить Ассемблер.

Семён Леонидович Углев

Программное обеспечение / Книги по IT18+
<p>Глава 1. Вступление</p>

Почему ассемблер? Перечитав энное количество книг, мне стало понятно, что хорошего самоучителя для изучения данного языка мне не найти. У каждого автора имеются свои плюсы и минусы в изложении; ряд авторов начинают с классических вещей – вводной лекции, теории, изучения переменных и операторов. Другие же начинают сразу с заумных вещей, публикуя "тяжеленные" тексты программ. Часть авторов изучают ассемблер в связке с языками высокого уровня. И лишь небольшое их количество идёт "заочным" путём – опуская заметную часть сложных операторов и объясняя простые; впрочем, разъясняя сложные операторы в дальнейшем. Так поступим и мы. Задача блога – быстро научить читателя программированию на ассемблере, и дать ему возможность самостоятельно изучать материал уже имея за плечами накопленные знания.

Что для этого нужно? Для начала – установите соответствующую операционную систему семейства Windows (мне, например, пришлось ради такого случая установить её в качестве виртуальной машины) – 98, 2000, XP (подойдёт и Vista). Далее – соответствующий набор инструментов, я использую Far manager в связке с плагином Colorer. Также понадобится сам ассемблер masm, отладчик AFDPRO и справочная информация HELPASSM.EXE.

Все исполняемые файлы, за исключением LINK.EXE, я копирую в папку ../Far2 – чтобы из любого места можно было компилировать созданные текстовые файлы. LINK.EXE лучше копировать в папку с будущей программой.

Если всё прошло успешно, вы должны получить такого рода окна:

Просмотр исходного текста на языке Ассемблера

Запуск файла помощи HELP.EXE

<p>Глава 2.  Первая программа</p>

Итак, вот как будет выглядеть наша первая программа.

Не обращайте внимания на излишние комментарии справа от каждого оператора. Это справочная подробная информация для желающих детально разобраться, что происходит в программе. Мы же просто хотим вывести на экран MS-DOS строку «Hello, world!» с помощью программы типа .com. Для вывода текста мы будем использовать функцию 9 прерывания 21h.

Сама программа будет выглядеть примерно так:

Суть достаточно проста.

а. Командой mov ah,9 мы загружаем в регистра ah число 9. На языке "Бейсик" это выглядело бы примерно так: LET A=9. Следует отметить в данном случае, что ah предназначен "для служебного пользования" – в частности, использования тех же функций. Также стоит отметить, что на самом деле ah – это старший байт регистра ax, состоящего на самом деле из двух частей – старшего байта (ah) и младшего (al). Аналогично работают и остальные служебные регистры (bx, cx, dx).

b. Командой mov dx,offset helloworld мы загружаем фразу "Hello, world!". Однако вся фраза, конечно, не поместится в регистр, поэтому мы используем приставку "offset" – смещение. Грубо говоря, это адрес, указывающий компилятору, где на самом деле находится эта фраза. Определим это в конце программы.

c. int 21h – данной командой осуществляем прерывание, то есть собственно вывод текста на экран.

Узнаем об этом поподробнее.

1. Открываем файл "HELP.EXE".

2. Нажимаем любую клавишу.

3. Заходим в раздел "Указатель функций DOS/BIOS".

4. Заходим в раздел "Прерывания DOS".

5. Заходим в раздел "INT 21H".

Последовательность 1-5 в дальнейшем будет обозначена нами так: HELP.EXE -> Указатель функций DOS/BIOS -> Прерывания DOS -> INT 21H

Как стало видно из текста, мы действительно должны загрузить в регистр ah номер желаемой функции (в нашем случае -"9"), и выполнить прерывание (int 21h). Всё просто. Однако, конечно, вышеприведённый текст – не вся программа. Она будет иметь определённые признаки оформления, которые мы будем использовать во всех примерах. Начинаться любая наша программа будет так:

А заканчиваться так:

В середине и будет располагаться наш текст, а чуть ниже него ещё два элемента:

– int 20h – завершающее программу прерывание, выход в DOS. Если его не указать, программа выполнит свою работу и "зависнет".

– helloworld db 'Hello, world!$' – собственно определение переменной helloworld. Директива db (define byte) определяет область памяти, доступную побайтно. Фраза "Hello, world!" указана в одинарных кавычках, а за знаком "!" указан знак "$" – конец строки. Почему так, поясним чуть позже. Что ещё следует знать, что определяем переменные мы в самом конце, чтобы при ассемблировании их не приняли за команды ассемблера.

Итак, полностью оформленный текст программы будет выглядеть чуть более обширно.

Совет: разберитесь со структурой файла помощи HELP.EXE!

<p>Глава 3. Системы счисления</p>

Итак, продолжим изучение языка. Опубликую текст программы ещё раз:

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT