Файл: 1. Основные параметры и характеристики логических элементов.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 304

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


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

Команды процессора могут быть безадресными, одноадресными и двухадресными.

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

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

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

Следует отметить, что в некоторых типах микропроцессоров реализуются также трехадресные команды, где задаются отдельные адреса размещения двух операндов и результата операции. Такие команды используют только регистровую адресацию и выполняются в микропроцессорах с RISC-архитектурой, имеющих значительный объем РЗУ, например, в PowerPC.

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

– операции пересылки;

– арифметические операции;

– логические операции;

– операции сдвига;

– операции сравнения и тестирования;

– битовые операции;

– операции управления программой;

– операции управления процессором.

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


93. Команды пересылки

Команды пересылки. Основной командой этой группы является команда MOV, которая обеспечивает пересылку данных между двумя регистрами или между регистром и ячейкой памяти. В некоторых микропроцессорах реализуется пересылка между двумя ячейками памяти, а также групповая пересылка содержимого нескольких регистров в память или их загрузка из памяти. Например, микропроцессоры семейства 68ххх компании Motorola выполняют команду MOVE, обеспечивающую пересылку из одной ячейки памяти в другую, и команду MOVEM, которая производит запись в память или загрузку из памяти содержимого заданного набора регистров (до 16 регистров). Команда XCHG производит взаимный обмен содержимым двух регистров процессора или регистра и ячейки памяти.

Команды ввода IN и вывода OUT реализуют пересылку данных из регистра процессора во внешнее устройство или прием данных из внешнего устройства в регистр. В этих командах задается номер интерфейсного устройства (порта ввода-вывода), через которое производится передача данных. Отметим, что многие микропроцессоры не имеют специальных команд для обращения к внешним устройствам. В этом случае ввод и вывод данных в системе выполняется с помощью команды MOV, в которой задается адрес требуемого интерфейсного устройства. Таким образом, внешнее устройство адресуется как ячейка памяти, а в адресном пространстве выделяется определенный раздел, в котором располагаются адреса подключенных к системе интерфейсных устройств (портов).

Команды арифметических операций. Основными в этой группе являются команды сложения, вычитания, умножения и деления, которые имеют ряд вариантов. Команды сложения ADD и вычитания SUB выполняют соответствующие операции с содержимым двух регистров, регистра и ячейки памяти или с использованием непосредственного операнда. Команды ADC, SBB производят сложение и вычитание с учетом значения признака С, устанавливаемого при формировании переноса или заёма в процессе выполнения предыдущей операции. С помощью этих команд реализуется последовательное сложение операндов, число разрядов которых превышает разрядность процессора. Команда NEG изменяет знак операнда, переводя его в дополнительный код.

Операции умножения и деления могут выполняться над числами со знаком (команды IMUL, IDIV) или без знака (команды MUL, DIV). Один из операндов всегда размещается в регистре, второй может находиться в регистре

, ячейке памяти или быть непосредственным операндом. Результат операции располагается в регистре. При умножении (команды MUL, IMUL) получается результат удвоенной разрядности, для размещения которого используются два регистра. При делении (команды DIV, IDIV) в качестве делимого используется операнд удвоенной разрядности, размещаемый в двух регистрах, а в качестве результата в два регистра записывается частное и остаток.

Команды логических операций. Практически все микропроцессоры производят логические операции И, ИЛИ, Исключающее ИЛИ, которые выполняются над одноименными разрядами операндов с помощью команд AND, OR, XOR. Операции выполняются над содержимым двух регистров, регистра и ячейки памяти или с использованием непосредственного операнда. Команда NOT инвертирует значение каждого разряда операнда.

94. Команды сдвига. Команды сравнения и тестирования.

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

Выполнение основных команд сдвига показано на рис. 8.8. При логических сдвигах влево (SHL) и вправо (SHR) производится заполнение освободившихся разрядов операнда нулями. Команда арифметического сдвига влево SAL реализуется аналогично команде логического сдвига SHL. При арифметическом сдвиге влево производится заполнение освободившихся разрядов значением старшего (знакового) разряда. Поэтому при таком сдвиге сохраняется знак операнда. Два варианта циклических сдвигов выполняются с включением признака С в цепь переноса (команды RCL, RCR) или с использованием признака С для хранения последнего выдвигаемого разряда операнда (команды ROL, ROR).

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

Рис. 8.8. Реализация команд сдвига

Команды сравнения и тестирования. Сравнение операндов обычно осуществляется с помощью команды CMP, которая производит вычитание операндов с установкой значений признаков N, Z, V, C в регистре состояний в соответствии с полученным результатом. При этом результат вычитания не сохраняется, и значения операндов не изменяются. Последующий анализ полученных значений признаков позволяет определить относительное значение (<, >, =) операндов со знаком или без знака. Использование различных способов адресации позволяет производить сравнение содержимого двух регистров, регистра и ячейки памяти, непосредственно заданного операнда с содержимым регистра или ячейки памяти.


Некоторые микропроцессоры выполняют команду тестирования TST, которая является однооперандным вариантом команды сравнения. При выполнении этой команды устанавливаются признаки N, Z в соответствии со знаком и значением (равно или не равно нулю) адресуемого операнда.

95.Команды битовых операций. Операции управления программой

Команды битовых операций. Эти команды производят установку значения признака С в регистре состояний в соответствии со значением тестируемого бита в адресуемом операнде. В некоторых микропроцессорах по результату тестирования бита производится установка признака Z. Номер тестируемого бита задается либо содержимым указанного в команде регистра, либо непосредственным операндом.

Команды данной группы реализуют разные варианты изменения тестируемого бита. Команда BT сохраняет значение этого бита неизменным. Команда BTS после тестирования устанавливает значение , а команда BTR – значение . Команда BTC инвертирует значение бита после его тестирования.

Операции управления программой. Для управления программой используется большое количество команд, среди которых можно выделить:

– команды безусловной передачи управления;

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

– команды организации программных циклов;

– команды прерывания;

– команды изменения признаков.

Безусловная передача управления производится командой JMP, которая загружает в программный счетчик PC новое содержимое, являющееся адресом следующей выполняемой команды. Этот адрес либо непосредственно указывается в команде JMP (прямая адресация), либо вычисляется как сумма текущего содержимого PC и заданного в команде смещения, которое является числом со знаком (относительная адресация). Так как PC содержит адрес очередной команды программы, то последний способ задает адрес перехода, смещенный относительно очередного адреса на заданное число байтов. При положительном смещении производится переход к последующим командам программы, при отрицательном смещении – к предыдущим.

Вызов подпрограммы также производится путем безусловной передачи управления с помощью команды CALL (или JSR). Однако в этом случае перед загрузкой в PC нового содержимого, задающего адрес первой команды подпрограммы, необходимо сохранить его текущее значение (адрес очередной команды), чтобы после выполнения подпрограммы обеспечить возвращение к основной программе (или к предыдущей подпрограмме при вложении подпрограмм). Текущее содержимое PC обычно сохраняется в стеке, который организуется в ОЗУ. После выполнения подпрограммы выполняется безусловная передача управления исходной программе с помощью команды возврата из подпрограммы RET, которая выбирает из стека и загружает в PC его старое содержимое.


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

Таблица 8.1

Мнемокод

Условие

Мнемокод

Условие

JO

Переполнение V=1

JNO

Нет переполнения V=0

JB

Ниже (не выше и не равно) C=1

JNB

Не ниже (выше или равно) C=0

JE

Равно (нуль) Z=1

JNE

Не равно (не нуль) Z=0

JBE

Ниже или равно (не выше) C+Z=1

JNBE

Не ниже и не равно (выше) C+Z=0

JS

Отрицательный знак N=1

JNS

Положительный знак N=0

JL

Меньше (не больше и не равно) N V=1

JNL

Не меньше (больше или равно) N V=0

JLE

Меньше или равно (не больше) (N V)+Z=1

JNLE

Не меньше и не равно (больше) (N V)+Z=0

В качестве условия часто используется относительное значение двух операндов, определяемое с помощью команды сравнения CMP. Например, равенство операндов определяется значением признака нуля Z после команды CMP: операнды равны, если Z=1 (результат равен 0); не равны, если Z=0 (результат не равен 0). Если сравниваются беззнаковые операнды, то соотношение их значений «выше–ниже–равно» определяют следующие условия:

– ниже/не выше и не равно (<), команда JB;

– не ниже/выше или равно (>=), команда JNB;

– ниже или равно/не выше (<=), команда JBE;

– не ниже и не равно/выше (>), команда JNBE.

Если сравниваются операнды со знаком, то соотношение между ними «больше–меньше–равно» определяют условия:

– меньше/ не больше и не равно (<), команда JL;

– не меньше/больше или равно (>=), команда JNL;

– меньше или равно/не больше (<=), команда JLE;