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

Один из основных принципов построения ЭВМ был сформулирован американским ученым Дж. фон Нейманом: работой ЭВМ управляет программа, состоящая из отдельных команд. Программа размещается вместе с данными в основной памяти ЭВМ. Каждая команда хранится в отдельной ячейке памяти (или группе смежных ячеек) и имеет свой адрес. Все команды имеют одинаковую структуру. Они состоят из двух частей: кода операции и адресной части. Код операции определяет, какую команду нужно выполнить. Адресная часть определяет, где хранятся операнды, т.е. обрабатываемые данные, и куда необходимо поместить результат операции.

В зависимости от количества используемых в команде операндов различаются одно-, двух-, трех-, четырехадресные и безадресные команды.

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

В двухадресных командах оба операнда перед выполнением операции находятся в памяти, поэтому их адреса указываются в команде. После выполнения команды в один из этих адресов засылается результат, а находившийся там операнд теряется.

В трехадресных командах два адреса указывают, где находятся исходные операнды, а третий - куда необходимо поместить результат.

В четырехадресных командах три адреса используются для указания исходных операндов и результата, а четвертый - для указания адреса следующей команды.

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

Все команды программы выполняются последовательно, команда за командой, в том порядке, как они записаны в памяти ЭВМ (естественный порядок следования команд). Этот порядок характерен для линейных программ, т.е. программ, не содержащих разветвлений.

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

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

Семейство микропроцессоров фирмы Intel, начиная от 8086 и вплоть до Pentium последних моделей, имеет базовую систему команд, в состав которой входят следующие группы:

1. команды пересылки данных:

    • команды пересылки данных внутри МП (MOV, PUSH, POP, XCHNG и т.д.);
    • команды ввода-вывода (IN, OUT);
    • операции с флагами;
    • операции с адресами (LEA, LDS и т.п.);

2. арифметические команды:

    • основные (сложение, вычитание, умножение, деление);
    • дополнительные (INS, DEC и др.);
  1. логические команды (сдвиг, дизъюнкция, конъюнкция, отрицание равнозначности и др.);
  2. команды обработки строковых данных (пересылка, сравнение, сканирование, слияние/разделение и др.);
  3. команды передачи управления (безусловный переход, условный переход, прерывания, переход с возвратом);
  4. команды управления ("нет операции", "внешняя синхронизация" и т.д.).

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