Ассемблер (англ. assembler) - общепринятое название транслятора из автокода. Ассемблер переводит исходную программу, написанную на автокоде, в перемещаемую программу на языке машинной. Поскольку ассемблер осуществляет трансляцию на язык загрузчика, при загрузке программы необходима настройка условных адресов, т.е. адресов, значения которых зависят от расположения данной программы в памяти ЦВМ и от ее связей с другими, независимо транслируемыми программами.
В простейшем случае, ассемблер переводит одно предложение начальной программы в один объект (команду, константу) модуля загрузки (т. наз. трансляция «один в один»). При этом взаимное расположение объектов в модуле загрузки и в памяти машины определяется порядком предложений в исходной программе на автокод, и полностью зависит от программиста. Ассемблер выполняет и вспомогательные функции, такие, как подготовка к печати документов необходимой формы, регистрация связей данной программы с другими программами и т. д. Для этой цели в автокодах предусматриваются команды ассемблера, которые не порождают объектов в рабочей программе и предназначены только для указания вспомогательных действий ассемблера.
Трансляция обычно требует двух просмотров исходной программы: при первом просмотре осуществляется распределение памяти и предоставления значений символическим именам, при втором - формируется рабочая программа в виде модуля загрузки. В процессе трансляции, ассемблер проводит полный синтаксический контроль исходной программы (см. синтаксический анализ программ), обеспечивая при этом достаточно точную диагностику ошибок по месту и характеру.
Расширение возможностей автокодов достигается за счет использования макрокоманд, которые строятся по правилам, близким к правилам написания команд автокодов, но описывающих сложные функции, для реализации которых нужна группа обычных команд. В этом случае, перед трансляцией, производится замена макрокоманд, макрорасширение - последовательностями команд на базовом языке, согласно макроопределениям. В последних, задается прототип макрокоманды со структурой списка параметров и процедура генерирования макрорасширения. Транслятор, выполняющий функции макрогенератора и ассемблера, называется макроассемблером. При трансляции с языков высокого уровня, ассемблер нередко используется для выполнения завершающей фазы трансляции.
Ассемблер (assembler) - система программирования, включающая язык ассемблера и транслятор с этого языка. Является языком программирования низкого уровня. Чем ниже уровень языка программирования, тем ближе специфика работы программы к самому процессору, для которого она и была написана. Считается, что языки низкого уровня более сложные и требуют более узкой специализации программиста, поскольку программа написана на ассемблере для одного типа процессоров, окажется не всегда пригодной для работы с другими процессорами. Кроме того, программы написаны на ассемблере компактные и быстрые, что тоже является немаловажным.
Пока существуют процессоры, будет существовать и ассемблер.
Описание языка Ассемблера
Команды языка ассемблера соответствуют машинным кодам соответствующего микропроцессора или микроконтроллера. Фактически, речь ассемблера представляет собой более удобную символьную форму записи машинных команд. Как следствие, программы, написанные для одного типа процессоров, на другом не будут функционировать. Язык ассемблера также содержит средства для создания меток и переходов, что необходимо для создания циклов и ветвлений. Могут быть имеющиеся средства для создания макросов, процедур. Каждое семейство (модельный ряд) микропроцессоров имеет свой набор команд и, соответственно, свой набор инструкций на языке ассемблера.
Синтаксис
Intel-синтаксис
Intel-синтаксис является одним из самых распространенных, используется для IBM-совместимых компьютеров.
AT T-синтаксис
Отличается от Intel-синтаксиса наличием суффиксов к мнемоникам и префиксов к операндам.
Использование языка ассемблера и языков семейства С
Иногда возникает необходимость использования ассемблера при программировании на языках высокого уровня, часто при обращении к оборудованию.