С помощью машинного языка Ассемблер могут быть выполнены любые команды. На Ассемблере пишутся простые и быстрые программки. Несмотря на их малый размер, процесс написания программ на Ассемблере довольно сложен.
По этой причине команды на этом языке применяются для работы с аппаратной частью компьютера или в том случае, если на выполнение программы катастрофически не хватает ресурсов памяти. Код ассемблера в данном случае может быть оформлен в форме подпрограмм и проинтегрирован с кодами высокого уровня.
Поскольку Ассемблер сильно отличается в зависимости от типа используемой архитектуры, необходимо рассматривать данный язык для конкретной ситуации. В данной статье будет рассмотрена архитектура Win. Написание команд при этом меняется не сильно. Их можно использовать как на микроконтроллерах, так и на других электронных приборах, где используется ассемблер.
Арифметические команды
Программный язык Ассемблер отличается своей универсальностью, но несмотря на это в нем могут использоваться все четыре арифметические команды. При помощи Ассемблера были созданы языки программирования высокого уровня, которые сегодня используются в персональных компьютерах, мобильных устройствах и бытовой технике. Они работают довольно эффективно. Перечень команд, доступных в языке Ассемблер, состоит из сложения, вычитания, умножения и деления. Рассмотрим их все по-отдельности.
Сложение
Данная арифметическая операция должна быть известна многим со школы. Особенность данной операции связана с представлением складываемых чисел в памяти компьютера. Операции в общем случае имеет следующий вид: ADD <Ячейка 1/ Регистр 1>, < Ячейка 2/ Регистр 2>. В результате команда возьмет числа из ячеек и сложит их. Полученное число будет помещено в ячейку 1. Теперь обсудим условия выполнения данной операции. Оба числа должны иметь одинаковый размер. Это связано с тем, что сначала идет регистр, к которому затем приплюсовывается все остальное. Если вначале идет ячейка к ней можно прибавить регистр или непосредственный операнд.
Для более точного описания команд Ассемблера и их реализации требуется использовать более полный подход, а представить его в рамках одного обзора невозможно. Несмотря на то, что команд в Ассемблере очень мало, по ним пишется огромное количество литературы. Если вы хотите более детально ознакомиться с принципами работы этого языка программирования, советуем вам изучить ее. Это позволит узнать о всех преимуществах и недостатках различных архитектур.
Вычитания
Для осуществления данной операции используется тот же алгоритм, что и для выполнения предыдущего действия. Команда имеет схожий тип записи: SUB <Ячейка 1/ Регистр 1>, < Ячейка 2/ Регистр 2>. Здесь используется следующий принцип подсчета: из ячейки №1 вычитается значение ячейки №2. Результат записывается на место ячейки №1. Условия выполнения операции такие же, как и при выполнении сложения.
Умножение
В случае вычитания и сложения использовались одинаковые команды для знаковых и беззнаковых чисел. Для деления и умножения используются несколько иные алгоритмы. Так, например, чтобы перемножить беззнаковые числа, необходимо использовать команду следующего вида: MUL <операнд>. Операнд, указанный в данной команде, является одним из множителей.
Второй множитель и место хранения результата умножения фиксируются заранее. Место их фактического нахождения может стать темой для отдельной статьи. Для умножения знаковых чисел используется команда следующего вида: IMUL <операнд №1>, <операнд №2>. Встречаются и другие варианты реализации данной команду. Приведенный вариант является более привычным и понятным. Здесь указывается два множителя. Результат выполнения операции сохраняется в операнде №1.
В качестве операнда №1 обязательно выступает регистр, а в качестве операнда №2 – ячейка памяти или регистр. Опишем другие варианты: IMUL <операнд №1> , IMUL <операнд №1>>, <операнд №2>, <непосредственный операнд> IMUL <операнд №1>, <непосредственный операнд>. Первый случай по своему принципу напоминает MUL. Правила, справедливые для MUL, будут действовать и здесь. Во втором варианте можно указать местоположение результата умножения и сомножителя. Третий случай требует указаний регистра, который будет являться первым сомножителем. Понятие «непосредственный операнд» подразумевает под собой не определенный регистр, а число, на которое и нужно будет умножить операнд.
Деление
Как уже было сказано выше, для деления применяется две команды. Для знаковых чисел применяют команду IDIV <операнд>, а для беззнаковых DIV <операнд>. Главная особенность использования данных команд заключается в том, что используется только делитель. В качестве этого операнда может выступать ячейка памяти или регистр. У делимого всегда есть определенное местонахождение. Оно будет зависеть от размера числа. Есть свое местоположение и у результата выполнения операции.
Заключение
К полезным командам языка программирования Ассемблер также нужно отнести команду NEG <Ячейка / Регистр>. С ее помощью можно перевести знак в число, которое содержится в операнде. На этом данным обзор языка программирования Ассемблер завершен. Надеемся, он помог вам получить представление об арифметических командах. Они могут пригодиться вам при осуществлении операции декрементирования и инкрементирования. Для того чтобы декрементировать операнд, необходимо использовать следующую команду DEC <операнд>. Чтобы инкрементировать – INC <операнд>. Операндом может быть как регистр, так и ячейка. Основная польза от выполнения данных операций заключается в том, что они занимают меньше места, чем если бы данные операции осуществлялись при помощи обычных команд вычитания и сложения на языке Ассемблер.