Привязка к системе микрокоманд и особенностям микроархитектуры данного МПр;
Для упрощения программирования в машинных языках часто используются языки символического кодирования, в которых коды операций и адреса в командах вместо двоичного или шестнадцатеричного кода заменяются на символы (идентификаторы)или текстовые мнемотические коды, форма написания которых позволяет программисту лучше запомнить смысл выполняемой операции. Дополнительно здесь могут использоваться макрокоманды. Примером такого языка программирования является язык ассемблера – представляет собой символьную форму машинного языка с рядом возможностей, характерных для языка высокого уровня, включая макрокоманды (см. ГОСТ 19781-90). Ассемблер облегчает процесс программирования по сравнению с программированием в машинных кодах, потому что позволяет пристраивать символические имена регистрам компьютера и памяти, а также позволяет задавать удобные способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для предоставления числовых констант, использовать в программе коментарии и др. В результате существенно упрощается процедура, при которой для выполнения на МПр, программы на ассемблере транслируются в машинные коды с помощью трансляторов или компиляторов.
Транслятор – программа для перевода программ одного языка программирования на другой. Компилятор – транслятор, выполняющий перевод текста программы с проблемно-ориентированного или универсального языка на машинно-ориентированный язык, в машинный код. После этого машинный код может непосредственно запускаться на исполнение на МПр. Ассемблирование – процесс трансляции программы с языка ассемблера в машинный код.
К недостаткам ассемблера можно отнести привязку этого языка к конкретным типам процессоров.
В программе, составленной на машинном языке, используются определенные операторы для выполнения каждой вычислительной или логической операции. Оператор языка программирования – конструкция языка программирования, задающая одну или несколько операций, производимыми над операндами. При этом оператор точно указывает, где должны храниться числа (адрес ячейки запоминающего устройства, адрес операнда), как пересылать и обрабатывать числа и где хранить результатаы вычислений. Строка программного кода с оператором на языке ассемблера транслируется, как правило, в одну машинную команду.
Вторая группа включает языки программирования высокого уровня, машинно-независимые, в котором команды и данные записываются в языковой форме, привычной для восприятия человека. «Высокий уровень» применительно к языку программирования означает, что многие операции выполняются в нем автоматически, поэтому программистам при решении той же проблемы приходится писать меньше программного кода. Например автоматически выполняются следующие операции: