Система команд микропроцессора
Выполнение нужной операции обеспечивается соответствующей командой. Команда, как и данные, представляется двоичным кодом, образуя командное слово. Длина командного слова может равняться одному, двум и более байтам т. е. содержать 8, 16 и более разрядов.
В любой команде можно выделить две части: код операции (КОП) и адрес. Код операции настраивает МП на выполнение нужной операции, а адрес указывает местоположение данных операндов, участвующих в операции. В 24-разрядном (трехбайтовом) командном слове первые восемь разрядов (0...7) указывают адрес первого операнда (А1), вторые 8 разрядов (с 8-го по 15-й) —адрес второго операнда (А2) и последние 8 разрядов (с 16-го по 23-й) — код операции.
В современных вычислительных системах чаще всего используются одноадресные команды (16-разрядные), содержащие КОП и адрес одного операнда. Если в операции участвуют два операнда, то адрес второго операнда при этом считается известным. Таким адресом чаще всего является аккумулятор, в который второй операнд засылается до начала выполнения операции. Результат операции также размещается по фиксированному адресу, обычно по адресу размещения второго операнда. Иногда встречаются безадресные команды, содержащие только 8 разрядов, в которые записывается КОП. Такие команды используются для выполнения операций над информацией, расположенной по фиксированному адресу.
Команды, реализующие заданную программу, через устройство ввода-вывода вводятся в определенную часть ЗУ. Для обеспечения естественного порядка выполнения команд коды последовательно выполняемых команд располагаются в ячейках ЗУ с последовательно нарастающими адресами.
Набор команд, выполняемых МП, делится на ряд групп, основными из которых являются команды арифметических и логических операций,пересылок, ввода-вывода, управления, обращения к подпрограммам и некоторые специальные команды.
Команды арифметических и логических операций обеспечивают выполнение операций арифметического сложения, вычитания и умножения двоичных и двоично-десятичных чисел, их сравнение, а также выполнение операций логического сложения (дизъюнкции), логического умножения (конъюнкции), сложение по модулю 2 (ИСКЛЮЧАЮЩЕЕ ИЛИ), инверсию чисел, т. е. замену нулей единицами, а единиц — нулями, и некоторые другие. После выполнения этих команд результат операции поступает в аккумулятор или в указанную в этих командах ячейку ЗУ.
Команды пересылок используются для осуществления пересылки данных из одной ячейки ЗУ в другую, в аккумулятор или наоборот. Как правило, эти команды совершаются без разрушения данных в исходных ячейках, т. е. после осуществления команды пересылки в исходной и во вновь указанной ячейках памяти оказываются одни и те же данные. К командам пересылки относятся команды загрузки регистра, регистровой пары и аккумулятора, пересылки из регистра в регистр, записи содержимого аккумулятора в память.
Команды ввода-вывода служат для введения через шину данных входной информации, представленной в двоичном коде, в аккумулятор МП или для вывода содержимого аккумулятора на устройство отображения информации. Ввод или вывод информации осуществляется соответственно по камандам «Ввести» или «Вывести»
Команды управления включают в себя команды безусловного и условного переходов. По этим командам изменяется содержимое счетчика команд и нарушается последовательность выполнения команд программы. При безусловном переходе нарушение последовательности выполнения программы происходит всякий раз при выполнении программы. При этом адрес ячейки, в которой хранится команда и к которой осуществляется переход содержится в адресной части команды, по которой осуществляется этот переход.
При условных переходах последовательность выполнения команд программы нарушается лишь в том случае, когда результат вычислений, предусмотренных программой, удовлетворяет некоторому поставленному условию.
Команды обращения к подпрограммам являются разновидностями команд управления. Обычно подпрограммы хранятся в регистрах стека, которые в большинстве случаев размещаются в ЗУ (в некоторых МП в качестве стека используются внутренние регистры). Запись информации в стек называют загрузкой данных в стек, а выборку ее из стека — извлечением данных из стека.
При обращении к подпрограмме вначале происходит запоминание текущего содержания счетчика команд. Затем в счетчик записывается адрес первой команды подпрограммы. Последней командой подпрограммы является команда «Возврат из подпрограммы», по которой в счетчике восстанавливается число, соответствующее прерванной команде основной программы. По команде «Возврат из подпрограммы» может также осуществляться переход от одной подпрограммы к другой, если используется вложение подпрограмм.
Особую форму подпрограммы составляет операция, называемая прерыванием. Она заключается в том, что прекращение действий текущей программы осуществляется произвольно по запросу внешнего управляющего сигнала. Поскольку прерывание текущей программы может произойти в любом месте, необходимо обеспечить нормальную работу МП после возврата из прерывания. Для этого в начальный момент при поступлении команды на прерывание происходит запоминание содержимого регистров аккумуляторов, регистров признаков и состояний в стеке.
К специальным командам относятся команды разрешения прерывания, запрещения прерывания, останов и холостая операция. При исполнении команды «Холостая операция» никакие операции не выполняются, а содержимое счетчика адресов увеличивается на 1, после чего выполняется следующая по порядку команда.