Система команд - это совокупность команд, которые и только которые может выполнить процессор микроконтроллера. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Система команд - это совокупность команд, которые и только которые может выполнить процессор микроконтроллера.



Команда — элемент программы процессора, исполняемый как единое целое. Машинное слово или их последовательность, кодирующие команду процессора, называются командным словом. Символическое обозначение команды для программиста называется мнемоникой.

Команды состоят из функциональной и адресной части. Функциональная часть часть определяет действия, которые процессор совершает, выполняя команду. Адресная часть определяет, откуда берутся аргументы операции и куда помещается результат.

Командное слово как правило состоит из полей, каждое из которых кодирует определённый аспект команды — это тип выполняемой операции, её особенности, вид и размер операндов, их действительный адрес. Набор полей определяется форматом команды.

Пример — команда сложения процессора архитектуры M68000:

 

         ADD.L A6, D2    мнемоника

  ┌───────┘ │ │ │

  │ ┌───┼────┼───┘    соответствие полей слова элементам мнемоники

  │ │ └─┐ └─────┐

┌───┴───┬──┴──┬──┴──┬─────┴─────┐

│ КОП │ РГ │ РАЗМ│ ДА │ формат

├───────┼─────┼─────┼─────┬─────┤

│1 1 0 1│0 1 0│0 1 0│0 0 1│1 1 0│ командное слово

└───┬───┴──┬──┴──┬──┴──┬──┴──┬──┘

  │ │ │ │ └── номер регистра источника (6) ┐ действительный

  │ │ │ └──────── режим адресации (регистр адресов) ┘ адрес

  │ │ └────────────── размер и тип приёмника (23 бита, регистр данных)

  │ └──────────────────── номер регистра приёмника (2)

  └─────────────────────────── код операции

 

Рис. 1 Команда сложения

 

Википедия определяет систему команд более широко, как соглашение о предоставляемых архитектурой средствах программирования, а именно:

определённых типах данных,

инструкций,

системы регистров,

методов адресации,

моделей памяти,

способов обработки прерываний и исключений,

методов ввода и вывода.

Система команд процессора и методы адресации операндов.

 

Команды процессора

 

Основная функция любого процессора, ради которой он и создается, — это выполнение команд.

Написание программ для микропроцессорной системы — важнейший и часто наиболее трудоемкий этап разработки такой системы. А для создания эффективных программ необходимо иметь хотя бы самое общее представление о системе команд используемого процессора. Самые компактные и быстрые программы и подпрограммы создаются на языке ассемблера, использование которого без знания системы команд абсолютно невозможно, ведь язык ассемблера представляет собой символьную запись цифровых кодов машинного языка, кодов команд процессора. Конечно, для разработки программного обеспечения существуют всевозможные программные средства. Пользоваться ими обычно можно и без знания системы команд процессора. Чаще всего применяются языки программирования высокого уровня, такие как Си.и С++. Однако знание системы команд и языка ассемблера позволяет в несколько раз повысить эффективность некоторых наиболее важных частей программного обеспечения любой микропроцессорной системы — от микроконтроллера до персонального компьютера. Именно поэтому рассмотрим основные типы команд, имеющиеся у большинства процессоров, и особенности их применения.

Каждая команда, выбираемая (читаемая) из памяти процессором, определяет алгоритм поведения процессора на ближайшие несколько тактов. Код команды говорит о том, какую операцию предстоит выполнить процессору и с какими операндами (т.е. кодами данных), где взять исходную информацию для выполнения команды и куда поместить результат (если необходимо). Код команды может занимать от одного до нескольких байт, причем процессор узнает о том, сколько байт команды ему надо читать, из первого прочитанного им байта или слова. В процессоре код команды расшифровывается и преобразуется в набор микроопераций, выполняемых отдельными узлами процессора. Но разработчику микропроцессорных систем это знание не слишком важно, ему важен только результат выполнения той или иной команды.

В общем случае система команд процессора включает в себя следующие четыре основные группы команд:

 

Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника (Source) в приемник (Destination). Источником и приемником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется.

Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам требуется один или два входных операнда. Формируют команды один выходной операнд.

Логические команды производят над операндами логические операции, например логическое «И», логическое «ИЛИ», исключающее «ИЛИ», очистку, инверсию, разнообразные сдвиги (вправо, влево, арифметический сдвиг, циклический сдвиг). Этим командам, как и арифметическим, требуется один или два входных операнда, и формируют они один выходной операнд.

Наконец, команды переходов предназначены для изменения обычного порядка последовательного выполнения команд. С их помощью организуются переходы на подпрограммы и возвраты из них, всевозможные циклы, ветвления программ, пропуски фрагментов программ и т.д. Команды переходов всегда меняют содержимое счетчика команд. Переходы могут быть условными и безусловными. Именно эти команды позволяют строить сложные алгоритмы обработки информации.

В соответствии с результатом каждой выполненной команды устанавливаются или очищаются биты регистра состояния процессора {PSW). Но надо помнить, что не все команды изменяют все имеющиеся в PSW флаги. Это определяется особенностями каждого конкретного процессора.

 

Адресация операндов

Большая часть команд процессора работает с кодами данных (операндами). Одни команды требуют входных операндов (одного или двух), другие выдают выходные операнды (чаще один операнд). Входные операнды называются еще операндами-источниками, а выходные называются операндами-приемниками. Все эти коды операндов (входные и выходные) должны где-то располагаться. Они могут находиться во внутренних регистрах процессора (наиболее удобный и быстрый вариант). Они могут располагаться в системной памяти (самый распространенный вариант). Наконец, они могут находиться в устройствах ввода/вывода (наиболее редкий случай). Определение места положения операндов производится кодом команды. Причем существуют разные методы, с помощью которых код команды может определить, откуда брать входной операнд и куда помещать выходной операнд. Эти методы называются методами адресации. Эффективность выбранных методов адресации во многом определяет эффективность работы всего процессора в целом.

Методы адресации

Количество методов адресации в различных процессорах может быть от 4 до 16. Рассмотрим несколько типичных методов адресации операндов, используемых сейчас в большинстве микропроцессоров.

Непосредственная адресация предполагает, что операнд (входной) находится в памяти непосредственно за кодом команды. Операнд обычно представляет собой константу, которую надо куда-то переслать, к чему-то прибавить и т.д.

Прямая (или абсолютная) адресация предполагает, что операнд (входной или выходной) находится в памяти по адресу, код которого находится внутри программы сразу же за кодом команды (рис.). Например, команда может состоять в том, чтобы очистить (сделать нулевым) содержимое ячейки памяти с адресом 1000000. Код этого адреса 1000000 будет располагаться в памяти, внутри программы в следующем адресе за кодом данной команды очистки.

 

 

 

Рис..2.  Прямая адресация

 

Регистровая адресация предполагает, что операнд (входной или выходной) находится во внутреннем регистре процессора (рис.). Например, команда может состоять в том, чтобы переслать число из нулевого регистра в первый. Номера обоих регистров (0 и 1) будут определяться кодом команды пересылки.

 

 

Рис.3. Регистровая адресация

 

 

Косвенно-регистровая (или косвенная) адресация предполагает, что во внутреннем регистре процессора находится не сам операнд, а его адрес в памяти (рис.). Например, команда может состоять в том, чтобы очистить ячейку памяти с адресом, находящимся в нулевом регистре. Номер этого регистра (0) будет определяться кодом команды очистки.

 

 

Рис..4. Косвенная адресация

 

Реже встречаются еще два метода адресации.

Автоинкрементная адресация очень близка к косвенной адресации, но отличается от нее тем, что после выполнения команды содержимое используемого регистра увеличивается на единицу или на два. Этот метод адресации очень удобен, например, при последовательной обработке кодов из массива данных, находящегося в памяти. После обработки какого-то кода адрес в регистре будет указывать уже на следующий код из массива. При использовании косвенной адресации в данном случае пришлось бы увеличивать содержимое этого регистра отдельной командой.

Автодекрементная адресация работает наподобие автоинкрементной, но только содержимое выбранного регистра уменьшается на единицу или на два перед выполнением команды. Эта адресация также удобна при обработке массивов данных. Совместное использование автоинкрементной и автодекрементной адресаций позволяет организовать память стекового типа.

Из других распространенных методов адресации можно упомянуть об индексных методах, которые предполагают для вычисления адреса операнда прибавление к содержимому регистра заданной константы (индекса). Код этой константы располагается в памяти непосредственно за кодом команды.

Отметим, что выбор того или иного метода адресации в значительной степени определяет время выполнения команды. Самая быстрая адресация — это регистровая, так как она не требует дополнительных циклов обмена по магистрали. Если же адресация требует обращения к памяти, то время выполнения команды будет увеличиваться за счет длительности необходимых циклов обращения к памяти. Понятно, что чем больше внутренних регистров у процессора, тем чаще и свободнее можно применять регистровую адресацию и тем быстрее будет работать система в целом.

 



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 43; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.135.224 (0.011 с.)