PlayStation Network (PSN) - 2500 рублей
PlayStation Network (PSN) - 2500 рублей


PSN 1500 рублей PlayStation Network
PSN 1500 рублей PlayStation Network


Разблокировка Huawei E5330
Разблокировка Huawei E5330


В начало

Основы программирования МП устройств (Лекция)

 

ПЛАН ЛЕКЦИИ

1.  Классификация команд микропроцессора

2.  Виды адресации

3. Структура и форматы команд МП КР580ВМ80

 

1.  Классификация команд микропроцессора

Как уже отмечалось,  принципиальным  достоинством  МП является программируемость. Это  означает,  что  подавая  на вход МП команды, можно обеспечить нужную последовательность операций, т.е. реализацию определенного алгоритма.  Алгоритм  решаемой задачи может быть сколь угодно сложным,  необходимо лишь,  чтобы этот алгоритм был разбит на шаги в  соответствии  с  системой команд МП.  Поэтому система команд важна не только с точки зрения, что МП может делать, но и как выполняется алгоритм. Наличие или отсутствие какой–либо команды или группы команд может существенно повлиять на  выбор  МП  для  конкретного применения.

Классификация команд МП представлена на рисунке 8.

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

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

С функциональной точки зрения команды разделяются на три  большие группы: передачи, управления и обработки данных. Рассмотрим подробно основные команды,  применяемые в МП,  пользуясь классификацией по функциональным признакам. Названия команд обозначим русскими словами, указывающими на смысл выполняемых операций.

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

К командам связанным с обращением к памяти относятся:

ЗАГРУЗИТЬ (ПРОЧИТАТЬ), по которой содержимое одной из ячеек памяти засылается в регистр;

ЗАПОМНИТЬ (ЗАПИСАТЬ), по которой содержимое регистра засылается в ячейку памяти.

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

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

ЗАГРУЗИТЬ НЕПОСРЕДСТВЕННО,  по  которой  в регистр записывается константа, указанная в коде команды;

ПЕРЕСЛАТЬ, по которой содержимое одного регистра пересылается в другой.

К командам ввода–вывода относятся:

ВВОД, по  которой  содержимое  устройства ввода засылается во внутренний регистр МП;

ВЫВОД, по  которой  содержимое  внутреннего регистра МП (обычно аккумулятора) пересылается в устройство вывода.

 

 

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

К командам безусловного перехода относятся:

БЕЗУСЛОВНЫЙ ПЕРЕХОД (БП),  по которой в программный счетчик записывается содержимое адресного поля команды БП, т.е. обеспечивается переход в программе по адресу, указанному в команде;

БЕЗУСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ (переход  к  подпрограмме),  по которой в  программный  счетчик записывается новое содержимое (адрес первой команды подпрограммы),  но в отличие от команды БП  в  памяти сохраняется состояние  программного  счетчика и некоторых других регистров. При выполнении подпрограммы по ее последней команде ВОЗВРАТ восстанавливается содержимое программного счетчика и всех регистров.

Команды условного перехода проверяют состояние какого–либо разряда регистра,  флагового триггера или другого параметра. От результата проверки зависит, будет выполняться переход или нет. Обычно переход осуществляется если результат проверки соответствует указанному в команде условию. В эту подгруппу команд управления входят:

УСЛОВНЫЙ ПЕРЕХОД (УП) по адресу.  В коде команды УП обязательно указывается проверяемое условие,  в качестве которого в МП используются нулевое  или  ненулевое значение результата,  положительный или отрицательный знак результата, наличие или отсутствие сигналов переноса, переполнения и др.  При выполнении условия в программный счетчик записывается содержимое адресного поля команды УП, т.е. обеспечивается переход в программе по адресу указанному в команде. При невыполнении условия управление передается следующей команде программы;

УСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ, которая отличается от команды БЕЗУСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ тем, что переход к подпрограмме происходит только при выполнении указанного условия.

Обычно в систему команд МП включается еще  несколько  вспомогательных команд, которые позволяют управлять состоянием регистров или триггеров влияющих на выполнение условных переходов, например: УСТАНОВИТЬ ФЛАГ,  СБРОСИТЬ ФЛАГ, УСТАНОВИТЬ СТАРШИЙ РАЗРЯД АККУМУЛЯТОРА, СБРОСИТЬ СТАРШИЙ РАЗРЯД АККУМУЛЯТОРА и др.

Команды обработки  данных  делятся на арифметические и логические. К арифметическим относятся:

СЛОЖИТЬ содержимое двух регистров или регистра и ячейки памяти;

ВЫЧЕСТЬ из содержимого ячейки памяти  или  регистра  содержимое регистра;

УВЕЛИЧИТЬ НА 1 (ИНКРЕМЕНТ) содержимое ячейки памяти или регистра (указателя стека, индексного регистра, аккумулятора);

УМЕНЬШИТЬ НА 1 (ДЕКРЕМЕНТ) содержимое ячейки памяти или регистра;

СЛОЖИТЬ С УЧЕТОМ ПЕРЕНОСА,  по которой выполняется  сложение  с учетом состояния триггера переноса. Это позволяет легко организовать обработку чисел большой длины;

ВЫЧЕСТЬ С УЧЕТОМ ЗАЕМА;

СДВИГ содержимого ячейки памяти или регистра  (обычно  на  один разряд).

В подгруппу логических команд входят команды:

И (ЛОГИЧЕСКОЕ УМНОЖИТЬ),  по которой выполняется операция конъюнкции между содержимым двух регистров или ячейки памяти и регистра;

ИЛИ (ЛОГИЧЕСКИ СЛОЖИТЬ),  по которой выполняется операция дизъюнкции между содержимым двух регистров или ячейки памяти и регистра;

НЕРАВНОЗНАЧНОСТЬ, по которой производится поразрядное сравнение содержимого двух регистров или ячейки памяти и регистра;

ИНВЕРСИЯ  содержимого ячейки памяти или регистра.

 

2.  Виды адресации

 

Одной из  важнейших архитектурных характеристик МП является перечень возможных способов обращения к памяти  или  видов  адресации. Возможности МП по адресации существенны с двух точек зрения.

Во–первых, большой объем памяти требует большой  длины  адреса, так как  n–разрядный адрес позволяет обращаться к памяти емкостью 2n слов. Типовые 8–разрядные слова МП дают возможность  непосредственно обращаться только к 256 ячейкам памяти,  что явно недостаточно. Если учесть, что обращение к памяти является наиболее часто встречающейся операцией, то очевидно, что эффективность использования МП во многом определяется способами адресации к памяти большого объема при  малой разрядности МП.

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

Если адресное  поле  в команде является ограниченным и недостаточным для непосредственного обращения к любой ячейке памяти, то память в таких случаях разбивают на страницы,  где страницей считается 2n ячеек памяти.

Для согласования адресного поля команды малой разрядности с памятью большого  объема (для решения “страничной” проблемы) в МП применяются различные виды адресации:

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

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

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

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

Адресация относительно индексного регистра.  Исполнительный адрес образуется суммированием содержимого индексного регистра и адресного поля команды,  рассматриваемого как целое со знаком. Индексный регистр загружается специальными командами.

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

 

3. Структура и форматы команд МП КР580ВМ80

 

Система команд МП серии КР580ВМ80 содержит команды трех  форматов: однобайтные,  двухбайтные и трехбайтные.

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

Если в выполнении операции участвуют регистры, то один или два из них могут быть указаны в первом байте команды. При этом под номера регистров в поле команды отводятся вполне  определенные  разряды: три младших разряда (b2 – b0) кодируют номер регистра источника, содержащего операнд, а три средних (b5 – b3) – номер регистра–приемника, в  который засылается результат операции.  В тех случаях,  когда оба или один из этих регистров не участвуют в  выполнении  операции, соответствующие разряды используются под код операции.

Принято следующее кодирование регистров:

     000 – регистр В,             100 – регистр Н,

     001 – регистр С,             101 – регистр L,

     010 – регистр D,             110 – ячейка памяти,

     011 – регистр Е,             111 – аккумулятор А.

Код 100  является  признаком косвенной адресации к памяти с помощью 16–разрядного адреса,  размещенного в регистрах Н и L. В зависимости от расположения этого кода в команде,  обращение к соответствующей ячейке памяти производится или за операндом,  или для записи результатов операции.

 

 

Ряд команд МП предусматривает  обработку  или  передачу  чисел двойной длины. В этих случаях пары регистров В и С, D и Е или Н и L объединяются в 16–разрядные регистры,  имеющие номера 00,  01 и  10 соответственно. Под номера регистровых пар в командах отводятся разряды b2 и b1 (регистр–источник),  b5  и b4  (регистр–приемник), а разряды b0 и b3 используются для указания кода операции.

К двухбайтным командам в МП относятся команды с  непосредственной адресацией  и  команды ввода–вывода.  Соответственно второй байт команды этой группы содержит 8–разрядный операнд или 8–разрядный адрес устройства ввода или вывода.

В трехбайтных командах второй и третий байты  содержат  16–разрядные адреса (в командах с прямой адресацией) или 16–разрядные операнды (в командах загрузки регистровых пар и указателя стека).

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

Для удобства  сохранения и восстановления состояния МП во время прерываний и перехода к подпрограммам все указанные признаки  сохраняются в  специальном  регистре  – регистре признаков. Расположение признаков в разрядах регистра приведено в таблице.

 

 

где  S – признак “знака” (принимает значение  старшего  разряда

            результата);

Z – признак нулевого результата;

АС –признак вспомогательного переноса (если есть перенос

       между тетрадами байта, то АС=1, иначе АС=0;

Р – признак четности результата (если число единиц в байте

     результата четно, то Р=1, иначе Р=0);

С – признак переноса или заема  (если при выполнении коман–

     ды возник перенос из старшего разряда или заем в стар–

     ший разряд то С=1, иначе С=0).

Примечание: Для команд логического умножения признак вспомогательного переноса АС принимает значение четвертого разряда результата.

Полностью система команд МП серии КР580ВМ80 приведена в приложении учебного пособия "Микропроцессоры и микропроцес­сорные системы". Там же для каждой команды указывается как,  после ее выполнения, изменяется значение каждого признака: устанавливается в соответствии с результатом операции (+), не изменяется (–), сбрасывается в нуль (0) или устанавливается в единицу (1).

В общем случае команда должна содержать следующую информацию:

–код операции,  указывающий операцию,  которую должен выполнить МП;

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

–адрес ячейки памяти в которую должен быть помещен результат операции;

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

Т.е. команда в общем случае является четырехадресная.  Однако, такая структура команд приводит к более длинному формату  команд, что, в свою очередь, сопряжено с более сложным процессом их обработки и структурой процессора. Поэтому, в МП технике наибольшее распространение  получили безадресные и одноадресные команды, позволяющие построить простой процессор.  Однако,  при выполнении сложных операций находят применение различные форматы команд.

В системе команд МП серии 580 имеются однобайтные, двухбайтные и трехбайтные команды.

Информация о способе адресации выполняемой команды содержится  в коде операции первого байта команды.

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

Эти команды  позволяют  исключить  сравнительно длинный цикл обращения к ОЗУ и тем самым существенно повысить скорость выполнения операций. В связи с ограниченной разрядностью РОН и при работе с большим массивом данных,  используются другие методы адресации, которые позволяют обращаться к операндам, расположенным во внешней по отношению к МП памяти. Наиболее распространенной является косвенная регистровая адресация,  которая использует регистровую пару HL.