Система команд микропроцессора
Один из основных принципов построения ЭВМ был сформулирован американским ученым Дж. фон Нейманом: работой ЭВМ управляет программа, состоящая из отдельных команд. Программа размещается вместе с данными в основной памяти ЭВМ. Каждая команда хранится в отдельной ячейке памяти (или группе смежных ячеек) и имеет свой адрес. Все команды имеют одинаковую структуру. Они состоят из двух частей: кода операции и адресной части. Код операции определяет, какую команду нужно выполнить. Адресная часть определяет, где хранятся операнды, т.е. обрабатываемые данные, и куда необходимо поместить результат операции.
В зависимости от количества используемых в команде операндов различаются одно-, двух-, трех-, четырехадресные и безадресные команды.
В одноадресных командах указывается, где находится один из двух обрабатываемых операндов. Второй операнд должен быть помещен заранее в арифметическое устройство (для этого в систему команд вводятся специальные команды пересылки данных между устройствами).
В двухадресных командах оба операнда перед выполнением операции находятся в памяти, поэтому их адреса указываются в команде. После выполнения команды в один из этих адресов засылается результат, а находившийся там операнд теряется.
В трехадресных командах два адреса указывают, где находятся исходные операнды, а третий - куда необходимо поместить результат.
В четырехадресных командах три адреса используются для указания исходных операндов и результата, а четвертый - для указания адреса следующей команды.
В безадресных командах обычно обрабатывается один операнд, который до и после операции находится в арифметическом устройстве (в память не пересылается). Кроме того, безадресные команды используются для выполнения служебных операций (очистить экран, заблокировать клавиатуру, снять блокировку и др.).
Все команды программы выполняются последовательно, команда за командой, в том порядке, как они записаны в памяти ЭВМ (естественный порядок следования команд). Этот порядок характерен для линейных программ, т.е. программ, не содержащих разветвлений.
Для организации разветвлений (циклического выполнения участков программы) есть команды, нарушающие естественный порядок. К ним относятся: безусловная передача управления ("безусловный переход"), условная передача управления (т.е. переход, если выполняется заданное условие), обращение к подпрограмме ("переход с возвратом"), циклические операции. Кроме того, естественный порядок следования команд не соблюдается в машинах, использующих четырехадресные команды - в этом случае некоторые из команд передачи управления упраздняются.
При явном указании адреса следующей команды реализуется "принудительный" порядок следования команд. Он возможен, только если программа размещается в доступной процессору части основной памяти. Поскольку при этом команды (с точки зрения процессора) ничем не отличаются от данных, в процессе выполнения программы ее команды можно изменять (модифицировать), что повышает гибкость программирования и универсальность ЭВМ.
Семейство микропроцессоров фирмы Intel, начиная от 8086 и вплоть до Pentium последних моделей, имеет базовую систему команд, в состав которой входят следующие группы:
1. команды пересылки данных:
- команды пересылки данных внутри МП (MOV, PUSH, POP, XCHNG и т.д.);
- команды ввода-вывода (IN, OUT);
- операции с флагами;
- операции с адресами (LEA, LDS и т.п.);
2. арифметические команды:
- основные (сложение, вычитание, умножение, деление);
- дополнительные (INS, DEC и др.);
- логические команды (сдвиг, дизъюнкция, конъюнкция, отрицание равнозначности и др.);
- команды обработки строковых данных (пересылка, сравнение, сканирование, слияние/разделение и др.);
- команды передачи управления (безусловный переход, условный переход, прерывания, переход с возвратом);
- команды управления ("нет операции", "внешняя синхронизация" и т.д.).
Каждая команда имеет большое число модификаций, чаще всего определяемых режимом адресации данных (операндов).