Язык ассемблера


Язы́к ассе́мблера (англ. assembly language) — представление команд процессора в виде, доступном для чтения человеком. Язык ассемблера считается языком программирования низкого уровня в противовес высокоуровневым языкам, не привязанным к конкретной реализации вычислительной системы. Программы, написанные на языке ассемблера, однозначным образом переводятся в инструкции конкретного процессора и в большинстве случаев не могут быть перенесены без значительных изменений для запуска на машине с другой системой команд. Ассемблером называется программа, преобразующая код на языке ассемблера в машинный код; программа, выполняющая обратную задачу, называется дизассемблером.

Первые ассемблеры были спроектированы Кэтлин Бут в 1947 под ARC2[2] и Дэвидом Уилером[en] в 1948 под EDSAC[3], при этом термин «ассемблер» не использовали, просто называя язык «множеством базовых команд» (англ. basic order set) и «начальными командами» (англ. initial orders) соответственно. Впервые термин «ассемблер» для процесса объединения полей в командное слово начали использовать более поздние отчёты по EDSAC.

Также на ранних этапах развития программирования было введено понятие автокод — язык программирования, предложения которого по своей структуре в основном подобны командам и обрабатываемым данным конкретного машинного языка[4][значимость факта?]. В настоящее время термин фактически не используется.

Исторически, если первым поколением языков программирования считать машинные коды, то язык ассемблера можно рассматривать как второе поколение языков программирования[источник не указан 576 дней]. Недостатки языка ассемблера, например, сложность разработки на нём больших программных комплексов, позже привели к появлению языков третьего поколения — языков программирования высокого уровня (таких как Фортран, Лисп, Кобол, Паскаль, Си и другие).

Не существует общеупотребительного синтаксиса языка ассемблера. Так как системы команд различных процессоров значительно отличаются, также и отличаются языки ассемблера для этих процессоров. Кроме того, каждая программа-ассемблер может использовать отличающийся от других синтаксис. В ассемблерах для процессоров x86 наибольшее распространение получил так называемый Intel-синтаксис, в меньшей степени — синтаксис AT&T.