3. Система команд мп
Выполнение каждой команды производится микропроцессорной БИС в строго определенной последовательности, определяемой кодом команды, и синхронизируется во времени сигналами 1, 2 тактового генератора.
В зависимости от вида команды время выполнения команды (время получения, декодирования и выполнения) может состоять из 1–5 машинных циклов. Машинный цикл (МЦ) – время, требуемое для извлечения одного байта информации из памяти или выполнения команды, определяемой одним машинным словом. Машинный цикл может состоять из 3–5 машинных тактов. Машинный такт (МТ) – период синхросигналов 1 или 2. Для микропроцессорной БИС К580ВМ80 существует десять различных типов машинных циклов:
– извлечение кода команды;
– чтение данных из памяти;
– запись данных в память;
– извлечение из стека;
– запись данных в стек;
– ввод данных из внешнего устройства;
– запись данных во внешнее устройство;
– цикл обслуживания прерывания;
– обслуживание прерывания при работе МП в режиме останова;
– останов.
Первым машинным циклом при выполнении любой команды всегда является цикл извлечения кода команды.
Восьмиразрядное машинное слово используется для сообщения МП как кода команд, так и данных. Набор команд фиксирован и состоит из 244 различных команд. Все команды можно разделить на пять групп:
– команды переноса данных, осуществляющие перенос данных между регистрами или регистрами и памятью;
– арифметические команды, включают в себя команды сложения, вычитания, увеличения или уменьшения на единицу данных в регистрах или памяти;
– логические команды, позволяющие осуществить логические операции И, ИЛИ, исключающее ИЛИ, сравнение, сдвиг в регистрах или памяти;
– команды передачи управления, обеспечивающие передачу управления по условию или безусловную передачу, а также вызов или возврат из подпрограмм;
– команды управления и работы со стеком, организующие ввод – вывод из микро-ЭВМ, доступ к стеку и внутреннему регистру признаков микропроцессорной БИС, а также ее управление.
Память микро-ЭВМ организована в виде восьмиразрядных ячеек, каждая из которых имеет свой шестнадцатиразрядный адрес. Таким образом, микропроцессорная БИС может работать с памятью до 65536 байт.
Одна команда может содержать от одного до трех байт. Многобайтовые команды записываются в последовательные ячейки памяти. Первый байт команды всегда содержит код команды. При трехбайтовых командах во втором и третьем байтах содержатся данные (адрес), причем во втором байте записывается младший байт данных, а в третьем – старший байт данных (адреса).
Микропроцессорная БИС имеет четыре различных типа адресации к памяти или регистрам:
– прямая адресация – второй и третий байты команды содержат адрес памяти (младший байт адреса во втором байте команды, а старший байт – в третьем);
– адресация к регистру – команда указывает на регистр или пару регистров, в которых записаны данные;
– косвенная адресация с помощью регистров – команда указывает на пару регистров, в которых записан адрес памяти или данные;
– непосредственная – команда сама содержит данные.
При двухбайтовых данных во втором байте команды записывается младший байт, а в третьем – старший.
За исключением обслуживания прерываний и выполнения команд передачи управления, микропроцессор осуществляет выполнение программы, считывая команды последовательно из ячеек памяти.
В командах передачи управления адрес, к которому будет обращаться микропроцессор, может указываться с помощью прямой или косвенной адресации. При выполнении команд передачи управления по условию МП проверяет наличие условия и в случае его подтверждения осуществляет передачу управления. При неудовлетворении условия выполнение программы будет продолжаться с команды, записанной в ячейке памяти, следующей после команды передачи управления по условию.
При обслуживании прерывания, в зависимости от кода команды RST<N>, микропроцессорная БИС обращается к одной из восьми фиксированных ячеек памяти. Особенностью команды RST является то, что ее код передается в МП по шине данных от источника запроса на прерывание. Это происходит после того, как микропроцессор входит в режим прерывания и вырабатывает признак INTE=1. По этой команде содержимое программного счетчика микропроцессора записывается в стек, затем в нем устанавливается адрес прерывающей программы, состоящий из трехразрядного адреса из команды RST и нулей в остальных разрядах. Таким образом, передается управление одной из восьми возможных прерывающих программ.