Язык ассемблера - Учебник

Язык ассемблера — это низкоуровневый язык, специфичный для конкретного оборудования.

Язык ассемблера используется для программирования электронных вычислительных машин, микропроцессоров или микроконтроллеров.

Язык ассемблера взаимно однозначно соответствует набору машинных инструкций и не может быть перенесён между платформами.

В отличие от языков высокого уровня, таких как C и Python, язык ассемблера напрямую управляетрегистрами、адресами памятииинструкциями процессорабез слоя абстракции, скрывающего детали.


Зачем изучать ассемблер?

Изучение языка ассемблера позволяет по-настоящему понять основополагающие принципы работы компьютеров.

Ниже приведены несколько ключевых ценностей изучения ассемблера:

Цель обученияОписание
Понимание низкоуровневых деталей компьютераОсвоить, как ЦП, память и регистры работают вместе
Улучшение навыков отладкиУмение читать дизассемблированный код и находить низкоуровневые ошибки
Оптимизация производительностиПонимать код, создаваемый компилятором, и писать более эффективные программы на языках высокого уровня
Исследование безопасностиОснова для обратной разработки, анализа уязвимостей и написания shellcode
Встраиваемая разработкаНапрямую управлять аппаратным обеспечением на устройствах с ограниченными ресурсами

Что нужно знать перед изучением этого руководства

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

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

Инструменты, используемые в этом руководстве

ИнструментНазначениеРекомендуемая версия
NASMАссемблер, преобразует исходный код на языке ассемблера в объектные файлы2.16 или выше
GCC или LDКомпоновщик, связывает объектные файлы в исполняемые файлыЛюбая версия
GDBОтладчик, пошаговое выполнение и просмотр регистров/памятиЛюбая версия

Весь код примеров в этом руководстве написан и протестирован с использованием ассемблера NASM в Linux.

Если вы используете Windows, вы можете установить WSL или использовать виртуальную машину, чтобы настроить среду Linux.


Советы по обучению

Читайте каждую главу одну за другой и вручную вводите и запускайте каждый пример кода.

В изучении языка ассемблера акцент делается на практике; нельзя освоить его, только читая и не написав код.

Когда сталкиваетесь с непонятными концепциями, не спешите и ищите информацию в интернете, чтобы глубже их понять.

Кривая обучения языку ассемблера крутая, но как только вы его поймёте, ваше восприятие компьютеров качественно изменится. Продолжайте, и вы увидите другую картину.

Другие расширения