Ассемблер - уникальный язык программирования. Никакой другой язык не даст вам такого понимания работы компьютера, как ассемблер. Глубже - только машинные коды и электронные сигналы.

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

Что нужно знать для работы с ассемблером?

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

Кроме того нужны хорошие знания двоичной и шестнадцатеричной системы счисления. При работе на аппаратном уровне эти системы счисления будут использоваться постоянно.

Для работы с различными устройствами потребуются знания о портах ввода-вывода, таймерах, прерываниях, а также знание протоколов и стандартов обмена данными с этими устройствами.

Как устроены программы на ассемблер

Программы на языке ассемблер - это обычные тестовые файлы, которые можно создать в любом редакторе. Файлы обычно имеют расширение ".asm". Подключаемые файлы обычно делают с расширением ".inc". Преобразование этих файлов в программу происходит обычным для многих языков программирования путем - с помощью компилятора исходные файлы компилируются в объектные (в расширением ".obj"), а далее с помощью линковщика объектные файлы компонуются в исполняемый файл с расширением ".exe" (если писать программы под операционную систему DOS, можно сделать файл с расширением ".com")

Ассемблер - это язык низкого уровня. В нем нам доступна прямая работа только с тремя компонентами: процессор, оперативная память, порты ввода-вывода. Никаких высокоуровневых структур, классов и объектов здесь нет. При выходе за границы массивов не будет выброшено никаких исключений, никто не будет собирать за вами утекшую память, все придется контролировать самому. Писать программы на ассемблере из-за этого довольно трудно, но интересно.

Что потребуется для работы с ассемблером

Первое что будет нужно - это сам компилятор языка. Существует довольно много компиляторов, но наиболее распространены четыре: MASM (Microsoft Assembler), TASM (Borland Turbo Assembler), FASM(Flat Assembler), NASM(Netwide Assembler). Вместе с компилятором идет и компоновщик, либо отдельным исполняемым файлом, либо "все в одном". Вот неплохая статья по использованию различных компиляторов: MASM, TASM, FASM, NASM под Windows и Linux

Для редактирования файлов программы понадобится текстовый редактор с подсветкой синтаксиса ассемблера. Можно использовать редактор Notepad++, или любой другой редактор на ваш вкус.

Для написания программ под операционную систему DOS, либо для работы вообще без операционной системы вам потребуется виртуальная машина. Использовать для этих целей компьютер не очень удобно, так как в этом случае ошибки будут приводить к его перезагрузке, а это очень не быстрый процесс. У виртуальных машин перезагрузка происходит быстрее. Виртуальную машину можно содать с помощью таких программ как VirtualBox, Vmware, VirtualPC и т.п.

Вот собственно и все что потребуется.

Можно начинать!