Инструкции ассемблера AVR

👁 144 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Так как команды представляют из себя 16-ти битные числа, то имеется необходимость читать эти 16-ти битные числа команд и запоминать, в соответствии с порядком расположения битов в числе – это было бы неразумно, поэтому в ассемблере используются человеко-читабельные абревиатуры для каждой команды и констант, вместо 16-битных чисел. Они еще называются мнемониками и призваны для лучшего запоминания, чем для увеличения производительности процессора. Вся суть процессора заключается в оперировании двоичными числами и лишь через ассемблер мы можем оперировать мнемокодами, константами и числами в десятичной и шестнадцатеричном формате. К примеру, ассемблерная презентация команды в виде числа 9588 будет мнемокод «SLEEP». В противоположность 9588 запись данной команды в виде ассемблерного мнемокода «SLEEP» – гораздо легче запомнить и оперировать им в уме, чем просто число.
Команда суммирования будет просто «ADD». Чтобы указать регистры, значения в которых нужно суммировать надо записать их в виде параметров. Передача параметров в ассемблере – это не одно и тоже, что и передача параметров в С/С++, в ассемблере для этого не используются скобки, как в С/С++, а записывается следующим образом как
ADD R0, R1
Эта запись заставит процессор сложить значения регистров R0 и R1, а результат сложения записать в R0.

avr-assembler-translation-processПосле трансляции данная команда будет переводиться в 16-ти битное слово 0C01(«слово» на сленге программирования означает 16-битное число) и подобным образом транслируется в цифры весь человеко-читабельный код на ассемблере. Для того, чтобы записать полученный код в память микроконтроллера нужно компилировать программу. Компиляция – это процесс генерации объектного файла, в котором будет код из 1 и 0 и ничего больше. Данный файл необходим для записи в память, а чтобы записать нужно использовать программатор, который будет прожигать чип памяти программы в соответствии с объектным кодом на физическом уровне. Об этом мы еще поговорим.
ЦПУ понимает только значение 0C01 в формате 110000000001. После записи данной команды в память программы (FLASH – память) микроконтроллера, ЦПУ читает эту команду с параметрами и выполняет данную команду на физическом уровне записывая и перезаписывая биты в регистрах. Каждая команда, которую понимает ЦПУ имеет свое мнемоническое обозначение в ассемблере и наоборот – каждая мнемоническая команда имеет, понимаемую ЦПУ, инструкцию в виде двоичного кода, которая выполняет строго определенное действие с переданными ей параметрами. Возможности ЦПУ ограничены и определяются инструкциями, которые доступны в конечном ассемблерном языке. Ассемблер – это, своего рода, отражение того языка из 1 и 0, которое понимается процессором на физическом уровне и его можно считать базовым, который доступен для всех программируемых чипов.