|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Команды пересылокЭти команды делятся на команды однобайтовых или двухбайтовых пересылок и команды обмена байтами. Типичным примером команды однобайтовой пересылки служит команда межрегистровой пересылки, мнемонический код которой имеет вид Всего в системе команд имеется 63 команды типа MOV, которые можно представить в виде табл.2. В заголовке каждой строки даны комбинации из четырех старших двоичных символов кода операций, а в заголовке каждого столбца – комбинации
из четырех младших двоичных символов кода операций. Например, первая строка табл.2 имеет заголовок 0100, третий слева столбец – 0010. На пересечении первой строки и третьего столбца имеем команду
При последовательном просмотре табл.2. должно возникнуть недоумение при чтении команды с кодом операции В коде операции Коду операции Четвертая сверху строка табл.2 обозначена комбинацией 0111. Первые шесть команд этой строки означают, что содержимое соответствующего регистра В, С, D, E, H или L передается в ячейку памяти M, адрес которой записан в паре регистров HL. Имеет смысл только сделать замечание относительно команд с кодами Команда с кодом операции Команды последней строки табл.2 предусматривают передачу в регистр-аккумулятор содержимого любого из РОН или ячейки памяти M, адрес которой хранится в регистровой паре HL, или, наконец, содержимого того же регистра-аккумулятора, но с инверсией. Относясь к одной и той же группе, команды могут почти не отличаться или же отличаться очень сильно. Но главное их свойство состоит в том, что каждый код операции однозначно без каких-либо нечеткостей или необходимости обращения к дополнительной информации указывает ту последовательность действий, которая должна быть выполнена в микропроцессорной системе. Система организации команд проявляется при их записи в виде таблицы, что позволяет достаточно просто ориентироваться во множестве различных команд. Кроме рассмотренной группы команд имеются еще шесть семейств операций однобайтовых пересылок. Операции Семейство операций Семейство команд Команда Команда Команда Следующую подгруппу команд составляют команды двухбайтовых пересылок. Символические обозначения первых трех команд двухбайтовых пересылок имеют следующий вид:
Первая из этих команд не требует комментариев с тем исключением, что буквами YZ обозначается содержимое регистровых пар ВС, DE, HL или регистра SP. По второй команде содержимое регистровой пары HL передается в две соседние ячейки памяти. Подобный прием является типовым. Во всех операциях, выполняемых над словом длиной два байта, если при этом участвует память, указывается адрес одной ячейки, а обращение производится к двум соседним. Третья команда по смыслу противоположна предыдущей команде. Рассмотрим две оставшиеся команды двухбайтовых пересылок. Их символические описания имеют вид:
Символ YZ обозначает содержимое регистровой пары ВС, DE, HL или регистра слова состояния PSW. Команда PUSH предусматривает пересылку содержимого одной из перечисленных регистровых пар в две соседние ячейки памяти M (SP-1) и M (SP-2). При этом в регистр-указатель стека также засылается адрес последней ячейки памяти. Данные действия представляют типичную операцию заполнения стека. Смысл стековой организации памяти состоит в том, что к моменту начала любой операции в регистре-указателе стека хранится адрес последней занятой ячейки. Команда POP по смыслу противоположна команде PUSH. К командам пересылок относятся также команды обмена байтами. Символические описания данных команд следующие:
1.1.2. Команды ввода-вывода Таких команд всего две. Их мнемонические коды и символическое описание имеют следующий вид:
1.1.3. Команды арифметических и логических операций Данная группа команд делится на четыре подгруппы. К первой подгруппе относятся арифметические и логические операции с одним операндом. Первые три из них имеют следующие символические описания:
По первой команде логическое значение признака переноса С заменяется на противоположное. Следует отметить, что в символическом описании этой команды допущена неоднозначность. Буквой С в одних случаях обозначается один из РОН, а в других – признак переноса. По второй команде логическое значение признака переноса устанавливается равным 1, по третьей – содержимое регистра-аккумулятора А заменяется на инверсное. Команда десятичной коррекции DAA используется при выполнении арифметических операций сложения и вычитания над десятичными числами [1, 2, 3]. Подгруппу команд с одним операндом завершают четыре команды, символические описания которых имеют вид:
Данные команды предусматривают увеличение или уменьшение на единицу соответствующего 8- или 16-разрядного числа. При выполнении двух последних команд могут изменяться логические значения всех признаков, кроме признака переноса С. Следующую подгруппу составляют арифметические и логические операции с двумя операндами. Символические описания первых четырех из них следующие:
Арифметическая операция всегда выполняется над двумя числами, одно из которых хранится в регистре-аккумуляторе, а второе – в одном из РОН. Результат во всех случаях засылается в регистр-аккумулятор. При выполнении второй и четвертой команд учитывается значение признака переноса С. Здесь, снова допускается уже отмеченная выше неоднозначность. Символические описания следующих трех команд рассматриваемой подгруппы имеют вид:
Первая из них – команда, предусматривающая выполнение логического умножения (операция И) над содержимым регистра-аккумулятора A и содержимым одного из РОН. Вторая команда реализует логическое сложение (операция ИЛИ) над теми же операндами. Последняя команда осуществляет суммирование по модулю два (исключающее ИЛИ). Следующие команды рассматриваемой группы аналогичны семи предыдущим командам арифметических и логических операций с тем единственным отличием, что в качестве второго операнда используется второй байт D 8 двухбайтовой команды:
Последние две команды рассматриваемой подгруппы – команды сравнения. Первая из них, имеющая мнемоническое описание В отдельную подгруппу выделяется команда Последнюю подгруппу арифметических и логических команд составляют четыре команды сдвига: RAR (rotate accumulator right through carry), RRC (rotate right), RAL (rotate accumulator left through carry) и RLC (rotate accumulator left), предусматривающие выполнение операции сдвига содержимого регистра-аккумулятора. В каждом из четырех случаев логическое значение данного разряда заменяется логическим значением соседнего разряда. При командах RAR и RRC подобная замена производится слева направо, то есть осуществляется сдвиг вправо. При этом признаку переноса С присваивается логическое значение крайнего правого (старшего) разряда регистра-аккумулятора. При выполнении сдвига вправо в общем случае непонятно, каким должно стать логическое значение крайнего левого (младшего) разряда регистра. При выполнении команды RAR крайнему левому разряду регистра присваивается логическое значение признака переноса С, при выполнении команды RRC – то логическое значение, которое до выполнения операции имел крайний правый разряд. Подобная операция известна также под названием циклического сдвига. По командам RAL и RLC выполняются операции сдвига, аналогичные соответственно двум рассмотренным командам, за тем исключением, что сдвиг производится влево. При выполнении операции сдвига значения всех признаков, кроме признака переноса С, остаются неизменными. Следует отметить, что микропроцессор К580ВМ80А выполняет всего две арифметические операции, то есть операции сложения и вычитания. Однако, этого вполне достаточно для выполнения любых вычислений, поскольку, например, операция умножения выполняется как ряд последовательных сложений, операция возведения в степень может быть выполнена как ряд последовательных умножений и так далее. Операции сложения и вычитания могут широко использоваться также при реализации, так называемых, невычислительных алгоритмов. Например, с помощью операции вычитания, как правило, производят простое сравнение двух чисел.
1.1.4. Команды управления Данная группа команд состоит из двух подгрупп. Первую подгруппу составляют команды передачи управления. Мнемонический код и символическое описание первой из группы команд передачи управления имеет вид В рассматриваемую группу команд также входят восемь команд условного перехода. В состав АЛУ микропроцессора К580ВМ80А входит 8-разрядный регистр признаков F, каждый разряд которого имеет определенное назначение. В нулевом (младшем) разряде этого регистра записывается признак переноса С (carry), которому присваивается логическое значение 1 в том случае, когда потребность в операции переноса возникает при сложении (вычитании) старших разрядов двух 8-разрядных двоичных чисел. Поскольку за одним исключением, которое будет рассмотрено дальше, операции сложения и вычитания выполняются только над 8-разрядными двоичными числами, то сигнал переноса в следующий разряд записывается в регистр признаков и либо учитывается при выполнения следующей операции, либо служит сигналом, привлекающим внимание программиста к возникшей ситуации. В первом разряде регистра признаков постоянно хранится единица. Во втором разряде хранится признак четности, обозначенный буквой Р (parity). Этот признак принимает значение 1, если число единиц в двоичном слове, хранящемся в регистре-аккумуляторе А, четное, иначе он имеет значение 0. В третьем и пятом разрядах регистра признаков постоянно хранятся нули. В четвертом разряде записывается признак АС (auxiliary carry), представляющий собой признак вспомогательного переноса. Этот признак принимает значение 1 в том случае, когда перенос возникает при выполнении сложения (вычитания) над четвертыми разрядами двоичных чисел. Признак Z (zero), хранящийся в шестом разряде регистра признаков, принимает значение 1, когда в результате выполнения команды содержимое регистра-аккумулятора А равно нулю. Наконец, признак знака S (sign), находящийся в седьмом разряде, принимает значение 1, если в результате выполнения команды содержимое регистра-аккумулятора является отрицательным числом. Результат выполнения любой команды всегда состоит из двух частей: двоичного слова, поступившего в регистр-аккумулятор А, и двоичного слова, находящегося в регистре признаков F. Эти два слова, взятые вместе, получили название слово состояния программы. Действительно, содержимое регистров А и F достаточно подробно характеризует то состояние, к которому привела последовательность операций на текущий момент времени. По-английски слово состояния программы это – programme state word. Первые буквы этих трех слов дают сокращение PSW, которое используется при символических описаниях команд. Все восемь команд условного перехода могут быть описаны одним мнемоническим кодом и одним символическим описанием NZ (no zero) – ненулевой результат, признак Z (zero) –нулевой результат, признак NC (no carry) – отсутствие переноса, признак C (carry) – перенос, признак PO (party omen) – нечетное число единиц результата, признак PE (party even) –четное число единиц результата, признак P (plus) – число неотрицательное, признак M (minus) – число отрицательное, признак В качестве примера рассмотрим порядок выполнения команды Специальная подгруппа группы команд управления предназначена для работы с подпрограммами. Первая команда имеет вид
Действие команды заключается в том, что код адреса ADR записывается в счетчик адресов команд PC. Под адресом ADR в данном случае подразумевается адрес первой команды подпрограммы. В отличие от команд безусловного и условного переходов основному действию команды предшествует подготовка, обеспечивающая возможность возврата из подпрограммы и продолжение выполнения программы. Предыдущее содержимое счетчика адресов команд передается в ячейки памяти с адресами При выполнении команды Кроме команд безусловного обращения к подпрограмме и безусловного возврата существуют их условные разновидности, символические описания которых следующие:
Из представленных описаний ясно, что по своему действию обе эти команды эквивалентны рассмотренной команде обращения к подпрограмме. Различие состоит в том, что они выполняются при удовлетворении одного из восьми рассмотренных ранее условий. Наименование условия записывается на место имени CON точно так же, как это делалось для команд условного перехода. Последняя разновидность команд обращения к подпрограммам имеет вид
Здесь адрес ADR зависит от значения числа X. Эта зависимость показана в табл.3. Иными словами, команда
1.1.5. Специальные команды Эта группа состоит всего из четырех команд: EI – разрешение прерывания (enable interrupt), DI – запрещение прерывания (disable interrupt), HLT – останов (halt) и NОР – холостая операция (no operation). Первые две команды служат для реализации механизма маскирования прерываний. Каждая программа должна заканчиваться командой останова HLT, по которой прекращается выполнение каких бы то ни было операций, но сохраняется содержимое всех регистров. По команде NOP операции не выполняются, но содержимое счетчиков адресов команд увеличивается на единицу и в следующем цикле выполняется следующая по порядку команда.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.019 сек.) |