ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 28.12.2024
Просмотров: 1973
Скачиваний: 3
СОДЕРЖАНИЕ
13.1. Классификация микропроцессоров и особенности их использования в цифровой аппаратуре.
13.2. Типовые структуры микропроцессорных систем.
13.3. Принцип программного управления в микропроцессорной системе.
13.4. Организация ввода-вывода в микропроцессорной системе.
13.5. Интерфейсы микропроцессорных систем.
13.6. Управляющие сигналы типового микропроцессора.
13.7. Структура типового микропроцессора.
13.8. Способы адресации данных.
13.9. Типовая система команд микропроцессора.
13.9.1. Команды пересылки данных.
13.9.2. Команды выполнения арифметических операций.
13.9.3. Команды выполнения логических операций.
Указатель данных используется для хранения адресов ячеек памяти, в которых хранятся обрабатываемые операнды. Указатель данных в этом случае является регистром-указателем адреса ячейки памяти. Микропроцессор читает содержимое этого регистра, рассматривает его содержимое как адрес ячейки памяти, по которому необходимо обратиться для чтения/записи операнда. Команды обращение к памяти через регистр-указатель данных также являются короткими и быстро исполняемыми.
Схема синхронгизации и управления служит для формирования внешних и внутренних управляющих сигналов всех узлов микропроцессора. Именно схема синхронизации и управления отвечает за последовательность действий микропроцессора по тактам при отработке каждой команды, т.е. определяет состав машинных циклов и циклов команды. Существуют микропроцессоры, в которых схема синхронизации и управления построена по принципу жесткой логики, и те, в которых эта схема представляет собой ПЛИС.
Выполнение любой команды начинается со считывания первого слова команды, которое содержит код операции, из памяти в регистр команд, где оно хранится в течение всего времени выполнения команды. Дешифрация кода операции производится в дешифраторе команд. По результатам работы дешифратора и под воздействием тактовых сигналов вырабатывается нужная последовательность управляющих сигналов схемой синхронизации и управления. Это приводит к считыванию из памяти остальных слов команды, если они имеются, а также к собственно выполнению операции, предписанной командой.
13.8. Способы адресации данных.
Способ адресации данных – это механизм указания месторасположения операнда, над которым команда выполняет дествие.
Прямая адресация. При прямой адресации адрес ячейки памяти, к которой необходимо произвести обращение, содержится в самой команде. К числу команд с прямой адресацией относятся также команды обращения к портам ввода или вывода. Прямая адресация наиболее удобна с точки зрения программиста, поскольку сразу задает нужный адрес. Однако команды этой группы из-за большого формата требуют нескольких обращений к памяти при их считывании, т.к. адрес ячейки памяти или порта содержится обычно во втором или во втором и третьем словах команды, что снижает производительность МП.
Регистровая адресация. Команды этой группы состоят из одного слова, в котором помимо кода операции содержатся также двоичные коды, указывающие регистры или регистровые пары МП, являющиеся источниками или приемниками информации. Команды этой группы выполняются наиболее быстро, поскольку имеют малый формат и, кроме того, их реализация не связана с обращениями к внешней памяти. Однако регистровая адресация требует предварительной загрузки данных в регистры или регистровые пары МП, в результате чего высокая скорость обработки информации достигается в тех случаях, когда одни и те же данные используются в программе многократно.
Косвенная адресация. При этой адресации адрес ячейки памяти, к которой необходимо произвести обращение, хранится в адресных регистрах-указателях данных или выполняющих их фукнции регистровых парах. Команды этой группы имеют длину в одно слово. Помимо кода операции слово команды содержит двоичный код, определяющий используемые регистры-указатели данных или регистровые пары. При выполнении команды адрес из регистра или регистровой пары поступает через буферный регистр адреса на шину адреса. Косвенная адресация уменьшает объем программы, но требует предварительной загрузки регистровой пары, поэтому такая адресация наиболее эффективна, когда один и тот же адрес используется в программе многократно или рассчитывается по определнному алгоритму.
Непосредственная адресация. При непосредственной адресации обрабатываемый операнд содержится непосредственно в команде, обычно во втором или во втором и третьем ее словах. Команды этой группы выполняются быстро, поскольку нет необходимости отыскивать операнд в памяти. Непосредственная адресация используется для введения констант, необходимых при решении поставленной задачи.
Относительная адресация. При относительной адресации фактический адрес определяется относительно счетчика команд или иного счетного регистра путем сложения содержимого этого регистра с указанным в команде числом. Содержимое счетчика команд или иного регистра называется базовым адресом, а указанное в команде число – логическим адресом или смещением относительно базового адреса. Относительная адресация позволяет размещать программы в памяти без привязки к конкретному адресу. Такая форма адресации удобна, когда разрядность счетчика команд ниже разрядности шины адреса микропроцессорной системы. Также относительная адресация используется для постраничной организации памяти. Содержимое счетчика команд в этом случае определяет адрес внутри страницы, а адрес, указанный в команде, определяет номер страницы.
Индексная адресация. Данный способ адресации отличается от относительной адресации тем, что для формирования фактического адреса используется содержимое не счетчика команд, а специального регистра, называемого индексным регистром. Данный способ адресации удобен при обработке таблиц и массивов данных. В этом случае адрес первого элемента можно хранить в индексном регистре, а все остальные элементы адресовать в команде относительно него, не заботясь о реальных фактических адресах.
Автоинкрементная (автодекрементная) адресация. Данный способ адресации позволяет организовывать обращение к соседним ячейкам памяти в цикле. Ее механизм схож с косвенной адресацией с той лишь разницей, что при каждом обращении к памяти содержимое регистра-указателя или замещающей его регистровой пары увеличивается или уменьшается на единицу или более в зависимости от длины адресуемых операндов. Разновидностью автоинкрементной (автодекрементной) адресации является стековая адресация. При этой адресации каждая загрузка в стек или выгрузка из стека изменяет содержимое указателя стека SP на еденицу в режиме инкремента или декремента в зависимости от типа микропроцессора.
13.9. Типовая система команд микропроцессора.
Поскольку микропроцессор воспринимает только двоичную форму информации, то команды должны быть представлены в виде двоичных кодов. Такая форма представления команд называется машинным языком или машинным кодом. Для человека машинные коды из нулей и единиц неудобны, поскольку их трудно запомнить и отождествить с фактическим назначением команды, а в самих машинных кодах легко перепутать 0 и 1. Для более краткой записи двоичных чисел используются также восьмеричная и шестнадцатеричная формы представления информации. Однако и в этом случае остается нерешенной основная проблема - что означает каждая команда, выраженная в подобной форме. По этой причине при описании команд используются условные обозначения в виде мнемонических названий. Мнемоническое название (мнемоника) команды представляет собой сокращение от английских слов, описывающих операцию, выполняемую командой. Мнемонический код команды позволяет легче запомнить ее функцию и значительно упрощает написание программ. Например, команда возврата из подпрограммы по которой хранящийся в стеке адрес возврата пересылается обратно в счетчик команд, имеет обозначение RET (от return – вернуться).
Каждый микропроцессор характеризуется своей системой команд. Система команд - это полный перечень тех операций, которые способен производить микропроцессор. Управляемый этими командами микропроцессор выполняет очень простые действия, такие, как элементарные арифметические и логические операции, операции пересылки данных, сравнения двух величин и другие. Однако, составив программу из последовательности таких команд, можно запрограммировать выполнение алгоритма любой сложности. Обычно все команды в системе команд объединяются в группы по функциональному назначению. Например, выделяют команды пересылки кодов, команды логических и арифметических действий, команды передачи управления и ряд команд других групп.
Условное обозначение команды помимо мнемоники может также включать названия регистров r или регистровых пар rp, если их наличие предусмотрено типом микропроцессора. При описании системы команд будем придерживаться принципа обобщенности изложения материала и автономности мнемоник и условных обозначений. Это значит, что представленные в данном разделе команды и их мнемоники абстрагированы от какого-либо конкретного микропроцессора, а отражают общие принципы построения систем команд большинства микропроцессоров и микроконтроллеров. Отметим лишь то, что приведенные в качестве примера команды в большей степени характерны для восьмиразрядных микропроцессоров и микроконтроллеров с аккумуляторной архитектурой. Это значит, что в большинстве команд для сохранения результата используется аккумулятор. Также он используется и в качестве источника одного из операндов арифметических или логических команд.
Воспользуемся для примера гипотетическими, не привязанными к конкретному типу микропроцессора, обозначениями регистров - аккумулятором А и регистрами общего назначения В и С. Безусловно, в реальных микропроцессорах количество регистров общего назначения может быть значительно больше и они могут иметь иные обозначения. Будем считать, что восьмиразрядные регистры B и C могут объединяться в шестнадцатиразрядную регистровую пару BC. Эта же регистровая пара будет выполнять функцию указателя адреса данных при косвенной адресации. При описании системы команд восьмиразрядный операнд будем условно обозначать data, а шестнадцатиразрядный операнд – data16. Номер (адрес) порта обозначим как port, а адрес ячейки памяти – как addr. При использовании команд в программе вместо обозначений data, data16, port и addr должны быть подставлены конкретные числовые значения операндов и адресов.
При разборе примеров команд будем, кроме введенных гипотетических аккумулятора А и регистров общего назначения В и С, пользоваться обозначением внешнего регистра M, организованного в памяти. Иными словами будем рассматривать регистр М как косвенно адресуемую ячейку памяти, адрес которой определяется содержимым регистра-указателя адреса при косвенной адресации. В нашем случае роль такого адресного регистра будет выполнять регистровая пара BC.
Кроме самих мнемонических обозначений команд в системе команд указываются обычно машинные коды для каждой команды и время их выполнения либо в тактах, либо в машинных циклах, если длина всех машинных циклов микропроцессора одинакова. Следует отметить, что передача данных как между внутренними регистрами микропроцессора, так и между микропроцессором и периферийными модулями всегда осуществляется с сохранением содержимого источника информации. Для удобства сведем все рассматриваемые команды в таблицу 13.1.
Наряду с описанными выше условными обозначений приведем прочие обозначения, используемые при описании нашей системы команд:
SP - указатель стека;
PC - счетчик команд;
ЯП – ячейка памяти;
( ) - содержимое регистра (регистровой пары), указанного внутри скобок;
[ ] - содержимое ячейки памяти (порта), адрес которой указан внутри скобок;
- направление передачи;
, , - логическии операции “ИЛИ”, “И”, “ИСКЛЮЧАЮЩЕЕ ИЛИ” соответственно;
-CON - обобщенное обозначение, заменяемое на мнемонику условия перехода. Договоримся использовать следующие мнемонические обозначения этих условий: NZ (no zero) - ненулевой результат (флаг ZF=0); Z (zero) - нулевой результат (флаг ZF=1); NC (no carry) - отсутствие переноса (флаг CF=0); C (carry) - наличие переноса (флаг СF=1); PO (parity odd) - нечетное число единиц в коде результата (флаг PF=0); PE (parity even) - четное число единиц в коде результата (флаг PF=1); P (plus) - неотрицательный результат (флаг SF=0); M (minus) - отрицательный результат (флаг SF=1).