Какие команды осуществляет процессор

Обновлено: 25.06.2024

По функциональному признаку все команды процессора можно разделить на следующие группы:

1) команды пересылки данных и ввода – вывода;

2) команды арифметических и поразрядных логических операций;

3) команды передачи управления.

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

Например, в языке ассемблера к командам этой группы можно отнести команду пересылки MOV, команду загрузки LOAD, команды записи в порт и чтения из порта УВВ, IN и OUT, соответственно. Также сюда часто включают команды помещения данных в стек PUSH и извлечения данных из стека POP.

mov ax,4; Переслать в регистр ax значение 4

mov al,a; Переслать в регистр al значение по адресу a

mov a,al; Переслать в ячейку по адресу a содержимое регистра al

in al,61h; Считать в регистр al значение порта 61 h

out 61h,al; Вывести в порт 61 h содержимое регистра al

add ax,4; Сложить содержимое регистра ax со значением 4

sub al,a; Вычесть из регистр al значение по адресу a

mul a; Умножить значение по адресу a на содержимое регистра al

or al,00000001b; Установить в регистре al значение нулевого ; бита в 1

and ah,0; Сбросить все биты регистра al в 0

Команды передачи управления используются для изменения последовательности выполнения команд при наличии программных ветвлений: команд условных и безусловного (JMP) переходов, обращении к подпрограммам (CALL) и выхода из них (RETURN). Команды условных переходов реализуют передачи управления в зависимости от значения флагов в регистре PSW. С их помощью процессор выполняет одну из возможных ветвей продолжения программы. Обычно в системе команд имеется несколько команд условных переходов.

jmp m1; Перейти на команду с адресом m 1

m1: mul a; Умножить значение по адресу a на содержимое ;регистра al

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

В системы команд конкретных процессоров могут входить команды, не вписывающиеся в предложенную классификацию. Подобные команды не отражают общих принципов построения программ и рассматриваются как дополнительные.

Выполнение команды (машинной операции) разделено на более мелкие этапы – микрооперации (микрокоманды), во время которых выполняются определённые элементарные действия. Конкретный состав микроопераций определяется системой команд и логической структурой ВМ. Последовательность микрокоманд, реализующих данную операцию (команду), образует микропрограмму операции. Интервал времени, в течение которого выполняется одна или одновременно несколько микроопераций, называется машинным тактом. Границы тактов задаются синхросигналами, которые вырабатываются генератором синхросигналов.

В общем случае, команда микропроцессора содержит две части: операционную и адресную (рис. 4).

Операционная часть
Адресная часть
A1
A2
A3
A4
Адреса операндов
Адрес результата
Адрес след. команды
Код операции
КОП

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

Соглашение о распределении разрядов между этими частями команды и способе кодирования информации определяет структуру (формат) команды.


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

В k -разрядной адресной части команды содержится информация об адресах операндов, участвующих в выполнении операции. В общем случае адресная часть команды должна содержать четыре адресных поля A 1, A 2, A 3, A 4. Они предназначены для задания адресов операндов (A 1, A 2), адреса результата (A 3) и адреса следующей команды (A 4). В качестве адресов A 1,…, A 3 могут использоваться адреса ячеек оперативной памяти и адреса регистров микропроцессорной памяти, в качестве адреса A 4 – только адреса ячеек оперативной памяти.

При использовании полного набора адресов формат команды оказывается громоздким. Следует отметить, что не для всех операций необходим полный набор адресов A 1 – A 4. В зависимости от указываемого числа адресов команды подразделяются на 0-адресные или безадресные (например, NOP – ничего не делать), 1-адресные (например, PUSH AX – поместить содержимое регистра AX в вершину стека), 2-адресные (например, ADD AH,AL – сложить содержимое регистров AH и AL), 3-адресные (тогда операция сложения, например, могла бы выглядеть следующим образом: ADD AH,AL,BX – сложить содержимое регистров AH и AL с сохранением результата в регистре BX) и 4-адресные (операция сложения могла быть записана, например, так ADD AH,AL,BX, 0020 – сложить содержимое регистров AH и AL с сохранением результата в регистре BX и последующей загрузкой команды по смещению 0020 в сегменте кода).

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

Использование адреса результата A 3 во многих случаях также оказывается избыточным. Это обосновывается тем, что результат арифметических и логических операций над двумя операндами обычно может быть помещён на место одного из операндов, который в дальнейшем, скорее всего, использоваться не будет. При этом в 2-адресных командах в адресное поле необходимо вводить дополнительные разряды, показывающие, кто из них является источником, а кто – приёмником информации. В процессорах с аккумуляторной архитектурой число адресов в адресной части команды уменьшено до одного. В них один из операндов, размещённых в аккумуляторе, неявно задаётся кодом команды, и результат помещается в аккумулятор.

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

Формат команд влияет на время решения задач, затраты памяти, сложность процессора и зависит от класса решаемых задач. В частности, для научно- технических расчётов, в которых большой объём занимают многошаговые вычисления, более эффективными оказываются 1-адресные команды, а при использовании стекового процессора – и безадресные команды. Для задач управления, где большую долю составляют пересылки и логические операции, эффективными являются 2-адресные команды. Исходя из сказанного выше, следует отметить, что в современных процессорах обычно используются безадресные, 1-адресные и 2-адресные команды. 3-адресные команды используются крайне редко, а 4-адресные не используются совсем.

Для процессора Intel 8086 используются следующие форматы команд:

В зависимости от структуры данных и их местонахождении доступ к ним может осуществляться различными способами. Рассмотрим режимы адресации данных для микропроцессора Intel 8086.

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

Каждая команда должна содержать сведения, необходимые для ее выполне­ния. Сведения кодируются. Для кодировки каждой группы сведений выделяется свое поле. Совокупность полей, содержащих необходимые сведения для выпол­нения требуемой операции, называют форматом команды. В формате команды должны быть определены:

● функциональное назначение операции в виде кода операции;

● адреса источников данных. В общем случае должны быть указаны адреса двух операндов;

● адрес места расположения результата;

● адрес следующей команды.

Способы уменьшения формата команды.

Рассмотрим гипотетическую ситуацию. Допустим, что в формате команды:

● поле кода операций (КО) занимает 4 разряда, что позволяет закодировать 2 4 = 16 операций;

● под адреса двух операндов–источников, адрес места расположения результа­та, адрес следующей команды выделены поля А O 1, А O 2, АР, АСК (рис. 2.7.1) по 12 разрядов, что позволяет в каждом случае адресовать 2 12 = 4К ячеек памяти.

рис. 2.7.1

Как видно из рис. 2.7.1, несмотря на скромные возможности команды, ее об­щая длина составляет достаточно большое число (52) бит. Для сокращения коли­чества разрядов команды часть информации должна быть задана неявно и не должна зависеть от особенностей конкретной команды.

Наиболее употребительными являются следующие способы сокраще­ния длины кода команды:

● использование специально предусмотренных для адресации регистров: про­граммного счетчика, указателя стека и др. Например, при выполнении ко­манд с последовательно возрастающими адресами программный счетчик ав­томатически считывает из памяти следующую команду. В этом случае в фор­мате команды отсутствует поле адреса следующей команды;

● использование неявных способов адресации. Например, при использовании неявной регистровой адресации адрес следующей команды или операнда хранится в регистре, код которого содержит значительно меньшее число раз­рядов, чем код исполнительного адреса;

совмещение источника одного из операндов с приемником результата. В этом случае в формате команды исключается поле адреса результата;

использование команд с укороченной адресацией, т. е. части адресного про­странства памяти;

● использование для некоторой группы операций одного регистра. Наиболее часто для этой цели используется аккумулятор. В операциях с аккумулятором не требуется его кодировка. Например, команда ADD

В выполняет операцию сложение содержимого регистра В с аккумулятором А и в него же помещает результат. Такая команда является одноадресной. Ее формат состоит из двух полей: кода операции и адреса операнда. Однако одноадресные команды требуют дополнительных команд для предварительной загрузки операндов в аккумулятор и последующего размещения результатов в памяти;

использование нескольких аккумуляторов (Motorola 6800, National РАСЕ, Signetic 2650). В этом случае каждая команда имеет два адреса, однако ад­рес источника и места назначения может быть задан другим аккумулятором. Следует отметить, что в одних процессорах все команды имеют одинаковую длину, в других — разную длину. Одинаковая длина всех команд упрощает деко­дирование, однако требует большего пространства, поскольку все команды долж­ны быть такой же длины, как самая длинная. Команды могут быть короче слова, равными слову или длиннее слова. В процессорах с неймановской архитектурой команды и данные имеют одинаковую длину и поступают в процессор по шине данных. Поэтому для отличия команд отданных в процессоре предусмотрены средства, обеспечивающие:

● засылку команд (первого байта) в регистр команд с дальнейшей их дешифра­цией для активизации устройства управления;

● поступление данных (последующих байт) в аккумулятор или другие регистры для обработки в АЛУ.

Форматы команд некоторых процессоров.

Рассмотрим в общих чертах форматы команд 8–разрядного (8080) и 16–разрядного (8086) процессоров. Дли­на команды кратна байту и может составлять один, два и более байт.

Достаточно простые форматы имеют команды процессора 8080 (рис. 2.7.2). Длина команд составляет от 1 до 3 байт. Код операции всегда размещается в первом байте команды. Второй и третий байты отводятся под непосредствен­ные данные, адрес порта или ячейки памяти. В командах допускается явное зада­ние только одного адреса памяти. Поэтому система команд процессора 8080 от­носится к классу одноадресных.

рис. 2.7.2

На рис. 2.7.3 изображены форматы команд процессора 8086. Длина команд составляет от 1 до 6 байт.

Микропроцессор выполняет программу, которая представляет собой последовательность команд. Каждая команда – это определенное действие, которое выполняет арифметико-логическое устройство.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Внутри АЛУ находятся блоки, каждый из которых может выполнять

одно или несколько действий, какой именно блок будет использоваться – определяется командой. Рассмотрим подробнее, каким образом это происходит.

Многие могут подумать, что сейчас, когда создание программ осуществляется на языках высокого уровня, совсем не обязательно знать, как выполняются отдельные команды в микропроцессоре. Однако, понимания принципов функционирования микропроцессора позволит создавать программы, которые будут максимально раскрывать потенциал современного микропроцессора и станет понятно, почему использование одних конструкций в программе предпочтительно, а других – нежелательно. Основная функция АЛУ – выполнение арифметических операций. На вход арифметико-логического устройства поступают некие числа и команда, которая определяет, какое действие будет производиться с этими числами. Результат, полученный после выполнения этого действия – тоже число – подается на выход.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Данные, с которыми работает АЛУ – операнды и результат – хранятся в одном из блоков

памяти. Работа с памятью – также функция АЛУ. Скорость обмена данными с внешними блоками памяти очень низкая по сравнению со скоростью работы АЛУ. Поэтому внутри МП предусмотрены ячейки памяти – регистры общего назначения, скорость чтения и записи в которые совпадает со скоростью работы АЛУ. В качестве операндов обычно может использовать только данные, которые хранятся во внутренних регистрах МК общего назначения. Результат также будет помещен в один из этих регистров. В команде обычно указано, из какого регистра берутся входные операнды и в какой регистр должен быть записан результат. Для работы с данными АЛУ сначала копирует данные из памяти в регистры, для чего предусмотрены отдельные команды.Все данные, необходимые для работы в ближайшее время, должны быть скопированы из памяти в регистры. А если получен результат, который не будет использоваться в ближайшее время, он может быть скопирован в память. Этот алгоритм позволяет существенно ускорить работу процессора. Хранить все данные в регистрах невозможно, т.к. объем регистров значительно меньше объема оперативной памяти, т.к. сделать быструю память большого объёма на одном кристалле с АЛУ технологически сложно и дорого.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

По функциональному назначению команды можно разделить на четыре группы: команды

пересылки данных, арифметические команды, логические команды и команды переходов.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Команды пересылки данных осуществляют загрузку данных из памяти во внутренние регистры процессора, сохранение в памяти содержимого регистров, копирование данных из одной области памяти в другую и обмен данными с устройствами ввода-вывода

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Группа арифметических команд реализует большинство арифметических операций –сложение, вычитание, умножение, деление, возведение в степень и другие. Операции над числами с фиксированной запятой (т.е. целыми числами) и над числами с плавающей запятой осуществляются разными командами, т.к. внутри АЛУ эти операции будут выполняться в разных блоках. Также к арифметическим командам относят команду очистка (т.е. запись нулевого значения в некоторый регистр), команды инкремента и декремента – т.е. увеличения или уменьшения значения на 1 и команда сравнения. Команда сравнения в результате выдает 0, если число отрицательно и 1, если число положительно

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

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

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Но в некоторых случаях необходимо начать выполнять команды, которые записаны в другом месте программы. Для этого применяются команды перехода – в них указано новое значение счетчика команда, т.е. номер команды, которая должна будет выполняться на следующем такте

По функциональному признаку все команды процессора можно разделить на следующие группы:

1) команды пересылки данных и ввода – вывода;

2) команды арифметических и поразрядных логических операций;

3) команды передачи управления.

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

Например, в языке ассемблера к командам этой группы можно отнести команду пересылки MOV, команду загрузки LOAD, команды записи в порт и чтения из порта УВВ, IN и OUT, соответственно. Также сюда часто включают команды помещения данных в стек PUSH и извлечения данных из стека POP.

mov ax,4; Переслать в регистр ax значение 4

mov al,a; Переслать в регистр al значение по адресу a

mov a,al; Переслать в ячейку по адресу a содержимое регистра al

in al,61h; Считать в регистр al значение порта 61 h

out 61h,al; Вывести в порт 61 h содержимое регистра al

add ax,4; Сложить содержимое регистра ax со значением 4

sub al,a; Вычесть из регистр al значение по адресу a

mul a; Умножить значение по адресу a на содержимое регистра al

or al,00000001b; Установить в регистре al значение нулевого ; бита в 1

and ah,0; Сбросить все биты регистра al в 0

Команды передачи управления используются для изменения последовательности выполнения команд при наличии программных ветвлений: команд условных и безусловного (JMP) переходов, обращении к подпрограммам (CALL) и выхода из них (RETURN). Команды условных переходов реализуют передачи управления в зависимости от значения флагов в регистре PSW. С их помощью процессор выполняет одну из возможных ветвей продолжения программы. Обычно в системе команд имеется несколько команд условных переходов.

jmp m1; Перейти на команду с адресом m 1

m1: mul a; Умножить значение по адресу a на содержимое ;регистра al

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

В системы команд конкретных процессоров могут входить команды, не вписывающиеся в предложенную классификацию. Подобные команды не отражают общих принципов построения программ и рассматриваются как дополнительные.

Выполнение команды (машинной операции) разделено на более мелкие этапы – микрооперации (микрокоманды), во время которых выполняются определённые элементарные действия. Конкретный состав микроопераций определяется системой команд и логической структурой ВМ. Последовательность микрокоманд, реализующих данную операцию (команду), образует микропрограмму операции. Интервал времени, в течение которого выполняется одна или одновременно несколько микроопераций, называется машинным тактом. Границы тактов задаются синхросигналами, которые вырабатываются генератором синхросигналов.

В общем случае, команда микропроцессора содержит две части: операционную и адресную (рис. 4).

Операционная часть
Адресная часть
A1
A2
A3
A4
Адреса операндов
Адрес результата
Адрес след. команды
Код операции
КОП

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

Соглашение о распределении разрядов между этими частями команды и способе кодирования информации определяет структуру (формат) команды.


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

В k -разрядной адресной части команды содержится информация об адресах операндов, участвующих в выполнении операции. В общем случае адресная часть команды должна содержать четыре адресных поля A 1, A 2, A 3, A 4. Они предназначены для задания адресов операндов (A 1, A 2), адреса результата (A 3) и адреса следующей команды (A 4). В качестве адресов A 1,…, A 3 могут использоваться адреса ячеек оперативной памяти и адреса регистров микропроцессорной памяти, в качестве адреса A 4 – только адреса ячеек оперативной памяти.

При использовании полного набора адресов формат команды оказывается громоздким. Следует отметить, что не для всех операций необходим полный набор адресов A 1 – A 4. В зависимости от указываемого числа адресов команды подразделяются на 0-адресные или безадресные (например, NOP – ничего не делать), 1-адресные (например, PUSH AX – поместить содержимое регистра AX в вершину стека), 2-адресные (например, ADD AH,AL – сложить содержимое регистров AH и AL), 3-адресные (тогда операция сложения, например, могла бы выглядеть следующим образом: ADD AH,AL,BX – сложить содержимое регистров AH и AL с сохранением результата в регистре BX) и 4-адресные (операция сложения могла быть записана, например, так ADD AH,AL,BX, 0020 – сложить содержимое регистров AH и AL с сохранением результата в регистре BX и последующей загрузкой команды по смещению 0020 в сегменте кода).

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

Использование адреса результата A 3 во многих случаях также оказывается избыточным. Это обосновывается тем, что результат арифметических и логических операций над двумя операндами обычно может быть помещён на место одного из операндов, который в дальнейшем, скорее всего, использоваться не будет. При этом в 2-адресных командах в адресное поле необходимо вводить дополнительные разряды, показывающие, кто из них является источником, а кто – приёмником информации. В процессорах с аккумуляторной архитектурой число адресов в адресной части команды уменьшено до одного. В них один из операндов, размещённых в аккумуляторе, неявно задаётся кодом команды, и результат помещается в аккумулятор.

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

Формат команд влияет на время решения задач, затраты памяти, сложность процессора и зависит от класса решаемых задач. В частности, для научно- технических расчётов, в которых большой объём занимают многошаговые вычисления, более эффективными оказываются 1-адресные команды, а при использовании стекового процессора – и безадресные команды. Для задач управления, где большую долю составляют пересылки и логические операции, эффективными являются 2-адресные команды. Исходя из сказанного выше, следует отметить, что в современных процессорах обычно используются безадресные, 1-адресные и 2-адресные команды. 3-адресные команды используются крайне редко, а 4-адресные не используются совсем.

Для процессора Intel 8086 используются следующие форматы команд:

В зависимости от структуры данных и их местонахождении доступ к ним может осуществляться различными способами. Рассмотрим режимы адресации данных для микропроцессора Intel 8086.

Читайте также: