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

Обновлено: 30.06.2024

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

восемь 32-битных регистров, которые могут использоваться для хранения данных и адресов (регистры общего назначения, РОН): EAX/AX/AH/AL, EBX/BX/BH/BL, EDX/DX/DH/DL, ECX/CX/CH/CL, EBP/BP, ESI/SI, EDI/DI, ESP/SP;

шесть сегментных регистров: CS, DS, SS, ES, FS, GS;

регистры состояния и управления: регистр флагов EFLAGS/FLAGS и регистр указателя команды EIP/IP.

Некоторые регистры указаны с наклонной разделительной чертой – это части одного большого 32-разрядного регистра. Сделано так для обеспечения совместимости программ созданных как для 16-разрядных моделей микропроцессоров начиная с 8086, так и для 32-разрядных моделей, начиная с микропроцессора 80386. Количество регистров, за исключением сегментных, такое же, как у 8086, но размерность в два раза больше, что и отображено в обозначениях.

Регистры общего назначенияразбиты на подгруппы:

регистры указателей и индексов;

Регистры данных предназначены для выполнения арифметических, логических и других машинных операциях. К этой группе относятся 8 регистров (рис. 8):регистр аккумулятораAX,регистр базыBX,регистр счетчикаCX,регистр данныхDX. Для всех этих регистров возможен независимый доступ к старшей и младшей половинам. Старший байт обозначают буквой Н (High), младший L (Low) и первой буквой из названия регистра: АН и AL – в АХ, ВН и BL – в ВХ и т.д. Таким образом, возможен доступ ко всему регистру и к любой его половине.

Рис. 8. Регистры общего назначения.

Каждый из регистров имеет определенную специализацию: некоторые команды требуют, чтобы их операнды находились в определенных регистрах. Например, команда деления требует, чтобы первый операнд находился в регистре АХ или в регистрах АХ и DX (в зависимости от размера операнда), а команды управления циклом используют регистр СХ в качестве счетчика.

Регистры указателей и индексовявляются неделимыми. К ним относятсяуказатель стекаSP,указатель базыBP,индекс источникаSI ииндекс приемникаDI (рис. 9). Они используется для модификации адресов. Если в команде операнд извлекается из памяти, то сослаться на него можно, указав некоторый адрес и некоторый регистр. В этом случае команда работает сисполнительным адресом, который вычисляется как сумма адреса, указанного в команде, и текущего значения указанного регистра. Из ячейки с таким адресом команда и будет извлекать операнд. Замена адреса, указанного в команде, на исполнительный адрес называетсямодификацией адреса, а используемый регистр –регистром-модификатором.

Рис. 9. Регистры указателей и индексов.

Выгода от такого способа задания операнда заключается в том, что, меняя значение регистра, можно одну и ту же команду использовать для работы с разными ячейками памяти (например, при обработке массивов при доступе к разным элементам). Модификаторами могут быть только регистры ВХ, ВР, SI и DI. Модифицировать адрес можно не только по одному регистру, но и по двум сразу, в этом случае разрешено использовать не любую пару модификаторов, а только такую, где один из регистров – ВХ или ВР, а другой – SI или DI.

Регистры SI и DI используются также для поддержки цепочечных операций, т.е. операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит. Регистр SI содержит текущий адрес элемента в цепочке-источнике, а DI – текущий адрес в цепочке-приемнике.

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

Сегментные регистрыпредназначены для сегментирования адресов. К ним относятсясегментныерегистры кодаCS,данныхDS,стекаSS идополнительный сегментныйрегистрES (рис. 10). В регистре CS должен находиться начальный адрес сегмента команд – области памяти, где расположены команды. Регистр DS должен ука­зывать на начало сегмента данных, в котором размещаются данные. Регистр SS должен указывать на начало области памяти, отведенной под стек.

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

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

Рис. 10. Сегментные регистры.

Регистр указателя команд содержит адрес команды, которая должна быть выполнена следующей, точнее, адрес команды, отсчитанный от начала сегмента команд, на который указывает регистр CS (рис. 11). Абсолютный адрес команды определяется регистровой парой CS:IP. Прямого доступа к регистру IP нет, т.к. его измене­ние есть переход. Поэтому содержимое регистров IP и CS можно менять только командами перехода.

Рис. 11. Регистр указателя команд.

Регистр флагов.Флагпредставляет собой бит, принимающий зна­чение 1 (флаг установлен), если выполнено некоторое условие, и значение 0 (флаг сброшен) в противном случае. Всего доступно 9 флагов, причем кон­структивно они собраны в один 16-разрядный регистр (регистром флагов Flags) (рис. 12).

Пользовательские регистры. Они называются так потому, что программист может использовать их при написании своих программ. К этим регистрам относятся:

1) восемь 32-битных регистров, которые могут использоваться программистами для хранения данных и адресов (их еще называют регистрами общего назначения -РОН):

1.1) eax – 32 бита/ ax – 16 бит/ ah/ al – по 8 бит;

1.2) ebx – 32 бита/ bx – 16 бит/ bh/ bl – по 8 бит;

1.3) edx – 32 бита/ dx – 16 бит/ dh/ dl – по 8 бит;

1.4) ecx – 32 бита/ cx – 16 бит/ ch/ cl – по 8 бит;

1.5) ebp – 32 бита/ bp – 16 бит;

1.6) esi – 32 бита/ si – 16 бит;

1.7) edi – 32 бита/di – 16 бит;

1.8) esp – 32 бита/ sp – 16 бит.

2) шесть регистров сегментов: cs, ds, ss, es, fs, gs по 16 бит;

3) регистры состояния и управления:

3.1) регистр флагов eflags – 32 бита/ flags – 16 бит;

3.2) регистр указателя команды eip – 32 бита/ ip – 16 бит.

Микропроцессоры i486 и Pentium имеют в основном 32-разрядные регистры. Их количество, за исключением сегментных регистров, такое же, как и у i8086, но размерность больше, что и отражено в их обозначениях — они имеют приставку e (Extended).

Перечислим регистры, относящиеся к группе регистров общего назначения. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:

1) eax/ax/ah/al (Accumulator register) — аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно. Например, при выполнении операций умножения и деления используется для хранения первого числа, участвующего в операции, и результата операции после ее завершения.

2) ebx/bx/bh/bl (Base register) — базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти (например, массивов).

3) ecx/cx/ch/cl (Count register) — регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды. К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx;

4) edx/dx/dh/dl (Data register) — регистр данных. Так же, как и регистр eax/ax/ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно. Используется как расширение регистра- аккумулятора при работе с 32- разрядными чмслами.

Следующие два регистра используются для поддержки цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит:

1) esi/si (Source Index register) — индекс источника. Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике;

2) edi/di (Destination Index register) — индекс приемника (получателя). Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике.

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

1) esp/sp (Stack Pointer register) — регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека.

2) ebp/bp (Base Pointer register) — регистр указателя базы начального адреса поля памяти, непосредственно отведенного под стек. Предназначен для организации произвольного доступа к данным внутри стека.

Большинство из перечисленных регистров могут использоваться при программировании для хранения операндов практически в любых сочетаниях. Но некоторые команды используют фиксированные регистры для выполнения своих действий. Это нужно обязательно учитывать.

В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs. Фактически в этих регистрах содержатся адреса памяти? с которых начинаются соответствующие сегменты. Логика обработки машинной команды построена так, что при выборке команды, доступе к данным программы или к стеку неявно используются адреса во вполне определенных сегментных регистрах. Микропроцессор поддерживает следующие типы сегментов:

1) Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register) — сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть, эти команды загружаются в конвейер микропроцессора).

2) Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register) — сегментный регистр данных, который хранит адрес сегмента данных текущей программы.

3) Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) — сегментный регистр стека, содержащий адрес сегмента стека.

4) Дополнительный сегмент данных. Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds. Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде. Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).

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

1) регистр флагов eflags/flags;

2) регистр указателя команды eip/ip.

Младшая часть регистра eflags полностью аналогична регистру flags (слово состояния процессора, описанного выше) для i8086.

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

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

Команды языка ассемблера

В персональных ЭВМ форматы команд достаточно разнообразны. Имеются команды с одним или двумя операндами.

1) формат команды “регистр — регистр” (2 байта);

2) формат команды “регистр — память” (2 — 4 байта);

3) формат команды “регистр — непосредственный операнд” (3 — 4 байта);

4) формат команды “память- непосредственный операнд” (3-6 байтов).

Команды передачи данных

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

Таблица 4.2 — Формат команд передачи данных

Название команды Мнемоника и формат команды Описание действия
Передать MOV DST,SRC (DST)(SRC)
Загрузить эффективный адрес LEA DST,SRC (REG) (SRC)
Загрузить в DS указатель LDS DST,SRC (REG) (SRC)(DS) (SRC+2)
Загрузить в ES указатель LES DST,SRC (REG) (SRC)(ES) (SRC+2)
Обменять XCHG OPR1,OPR2 (OPR1) (OPR2)

Ни один из флажков не изменяется. Что касается режимов адресации, то получатель не может быть непосредственным и не может быть CS. В командах LEA, LES, LDS операнд REG не может быть сегментным регистром, а источник не может иметь непосредственный или регистровый режим. В команде MOV один из операндов должен быть регистром. В команде XCHG хотя бы один из операндов должен быть регистром, но ни один из операндов не может быть сегментным регистром.

Статьи к прочтению:

Hackerdom-10-03 Регистры процессоров


Похожие статьи:

Счетчик команд– адрес текущей выполняемой или прерванной команды процессора. Таблица состояния устройств– таблица, хранимая и используемая операционной…

Центральный процессор (ЦП) — устройство, непосредственно предназначенное для выполнения вычислительных операций. Процессор работает под управлением программы, выполняя вычисления или принимая логические решения, необходимые для обработки информации.
Большинство современных центральных процессоров строятся на базе 32-битной архитектуры Intel-совместимых процессоров IA-32 (Intel Architecture), которая является третьим поколением базовой архитектуры x86.

Структура центрального процессора

Функционально центральный процессор можно разделить на две части:

  • операционную, содержащую арифметико-логическое устройство (АЛУ) и микропроцессорную память (МПП) — регистры общего назначения;
  • интерфейсную, содержащую адресные регистры, устройство управления, регистры памяти для хранения кодов команд, выполняемых в ближайшие такты; схемы управления шиной и портами.

Программная модель центрального процессора

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

Арифметико-логическое устройство (АЛУ) предназначено для выполнения арифметических и логических операций преобразования информации.

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

  • Шина данных – служит для пересылки данных между процессором и оперативным запоминающим устройством (ОЗУ).
  • Шина адреса – используется для передачи сигналов, с помощью которых определяется местоположение ячейки памяти для выполняемых процессором операций чтения/записи и ввода-вывода.
  • Шина управления – служит для пересылки управляющих сигналов. Каждая линия этой шины имеет своё особое назначение, поэтому они могут быть как однонаправленными, так и двунаправленными.
Микропроцессорная память

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

  • регистры общего назначения;
  • сегментные регистры;
  • регистр счетчика команд;
  • регистр признаков.

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

Набор регистров общего назначения 32-битной архитектуры центрального процессора включает в себя

  • 4 универсальных регистра: EAX, EBX, ECX, EDX ;
  • 2 индексных регистра: ESI, EDI ;
  • 2 регистра для работы со стеком: ESP, EBP .

Набор регистров центрального процессора

Регистры общего назначения


Регистр EAX (аккумулятор) – автоматически применяется при операциях умножения, деления и при работе с портами ввода-вывода. Его использование в арифметических, логических и некоторых других операциях позволяет увеличить скорость их выполнения. Используется для записи возвращаемого значения из функции.
Регистр EBX (регистр базы) – может содержать адреса элементов оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных.
Регистр ECX (счетчик) – используется в операциях повторения, например в циклах, в строковых командах и т.д.
Регистр EDX (регистр данных) – является единственным элементом, который может хранить адреса портов ввода-вывода в командах типа IN (получить из порта) и OUT (вывести в порт). Без его помощи невозможно обратиться к портам с адресами в адресном пространстве больше 1 байта. Автоматически применяется также в операциях умножения и деления.

Индексные регистры используются для выполнения косвенной адресации, а также автоматически используются в строковых командах. Каждый 32-разрядный индексный регистр представляет собой логическое объединение, позволяющее отдельно обратиться к своей младшей 16-разрядной части.
Регистр ESI (регистр индекса источника) может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки источника в сегменте данных.
Регистр EDI (регистр индекса приемника) может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки приемника в сегменте данных.


Регистры для работы со стеком используются для хранения вершины стека ( ESP ) и текущего элемента (базы) — EBP . Каждый 32-разрядный регистр для работы со стеком представляет собой логическое объединение, позволяющее отдельно обратиться к своей младшей 16-разрядной части.
Регистр EBP (указатель базы) может содержать адреса элементов в оперативной памяти. Эти адреса будут представлять собой смещение в сегменте стека.
Регистр ESP (указатель стека) используется для записи данных в стек и чтения их из стека. Фактически он содержит смещение в сегменте стека, которое определяет нужное слово памяти. Значения этого регистра автоматически меняются командами для работы со стеком типов push, pop, pushf, popf, call, ret .

Сегментные регистры представляют собой набор 16-разрядных регистров (для 32-битной архитектуры центрального процессора).
Сегмент — это логический элемент программы, который представляет собой независимый, поддерживаемый на аппаратном уровне блок памяти.

Регистр CS (регистр сегмента кода) определяет стартовый адрес сегмента, в который помещается код выполняемой программы. Это единственный сегментный регистр, который нельзя загрузить непосредственно. Косвенно загрузить в регистр CS новое значение могут команды вида jxx, call, int, ret, iret .
Регистр DS (регистр сегмента данных) определяет стартовый адрес сегмента, в который помещаются данные для программы. По умолчанию смещения в сегменте данных задаются в регистрах EBX , ESI и EDI .
Регистр SS (регистр сегмента стека) определяет стартовый адрес сегмента, в который помещается стек для программы. По умолчанию смещения для сегмента стека задаются в регистрах ESP и EBP .
Регистры ES, FS, GS (регистры сегментов дополнительных данных) опредляют стартовый адрес сегмента, в который помещаются дополнительные данные для программы. Например, в случае строковых команд, DS определяет сегмент для строки-источника, а ES – сегмент для строки-приемника. За исключением строковых команд, доступ к данным в сегменте ES обычно менее эффективен, чем в сегменте DS .

Регистр счетчика команд
Регистр EIP (указатель команд) содержит смещение в сегменте кода следующей выполняемой команды. Как только некоторая команда начинает выполняться, значение регистра EIP увеличивается на ее длину так, что будет адресовать следующую команду. Физический адрес команды в памяти выполняемой программы определяет пара регистров CS:EIP , то есть к физическому адресу начала сегмента кода добавляется смещение следующей команды в сегменте кода, хранящееся в регистре EIP .

Регистр признаков

Обычно команды выполняются в той последовательности, в которой они расположены в программе. Нарушают эту последовательность только команды переходов (они начинаются с буквы j: jxx ), команды вызова подпрограммы ( call ), обработчиков прерываний ( int ) и возврата ( ret, iret ). Непосредственно содержимое EIP нельзя изменить или прочитать. Косвенно загрузить в регистр EIP новое значение могут только команды jxx, call, int, ret, iret . Регистр EIP является 32-битным. Младшая 16-битная часть регистра счетчика команд имеет имя IP .

Регистр признаков
Регистр признаков EFLAGS включает биты, каждый из которых устанавливается в единичное или в нулевое состояние при определенных условиях. Регистр EFLAGS 32-битный. Младшая 16-битная часть регистра признаков имеет имя FLAGS .

Все биты регистра признаков подразделяются на

  • s — биты состояния ( STATUS );
  • c — биты управления ( CONTROL );
  • x — системные биты ( SYSTEM ).

Регистр признаков

CF – бит переноса: устанавливается в 1, когда арифметическая операция генерирует перенос или выход за разрядную сетку результата. сбрасывается в 0 в противном случае. Этот флаг показывает состояние переполнения для беззнаковых целочисленных арифметических действий. Он также используется в арифметических действиях с повышенной точностью. Может быть установлен командой STC или сброшен командой CLC .

PF – бит четности: устанавливается в 1, если результат последней операции имеет четное число единиц.

AF – бит вспомогательного переноса: устанавливается в 1, если арифметическая операция генерирует перенос из младшей тетрады битов (из 3 бита в 4), сбрасывается в 0 в противном случае. Этот флаг используется в двоично-десятичной арифметике.

ZF – бит нулевого значения: устанавливается в 1, если результат нулевой, сбрасывается в 0 в противном случае.

SF – знаковый бит: устанавливается равным старшему биту результата, который определяет знак в знаковых целочисленных операциях (0 – положительное число, 1 – отрицательное число).

TF – бит пошаговой отладки: устанавливается в 1 для включения режима пошаговой отладки программы, сбрасывается в 0 в противном случае.

IF – бит прерываний: при значении 1 микропроцессор реагирует на внешние аппаратные прерывания по входу INTR. При значении 0 микропроцессор игнорирует внешние прерывания.

DF – бит направления: управляет строковыми командами ( MOVS, CMPS, SCAS, LODS, STOS ). Если DF = 1 (команда STD ), то содержимое индексных регистров ESI, EDI увеличивается, если DF = 0 (команда CLD ), то содержимое индексных регистров ESI, EDI уменьшается.

OF – бит переполнения: устанавливается в 1, если целочисленный результат выходит за пределы разрядной сетки. Тем самым данный бит указывает на потерю старшего бита результата.

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

NT – флаг вложенной задачи: управляет последовательностью вызванных и прерванных задач. Установлен в 1, если текущая задача связана с предыдущей, сброшен в 0, если текущая задача не связана с другими задачами.

RF — флаг возобновления: используется при обработке прерываний от регистров отладки.

VM — флаг виртуального 8086: признак работы процессора в режиме виртуального 8086: 1 – процессор работает в режиме виртуального 8086, 0 – процессор работает в реальном или защищенном режиме.

AC — флаг контроля выравнивания: предназначен для разрешения контроля выравнивания при обращениях к памяти. Если требуется контролировать выравнивание данных и команд по адресам, кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут вызывать исключительную ситуацию.

VIF — флаг виртуального прерывания: при определенных условиях (одно из которых – работа микропроцессора в V-режиме) является аналогом флага IF . Флаг VIF используется совместно с флагом VIP .

VIP — флаг отложенного виртуального прерывания: устанавливается в 1 для индикации отложенного прерывания. Используется совместно с VIF в виртуальном режиме.

ID — флаг поддержки идентификации процессора: используется для отображения поддержки микропроцессором инструкции CPUID .

Цель лекции: знакомство с архитектурой и основными функциональными узлами микропроцессора КР580ВМ80А.

Структурная схема процессора изображена на рисунке 3.1


Общий принцип работы микропроцессорного устройства

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

Архитектура типового микропроцессора приведена на рисунке 3.2.


В микропроцессоре можно выделить пять основных блоков:

1) устройство ввода информации

2) управляющее устройство (УУ)

3) арифметико-логическое устройство (АЛУ)

4) запоминающие устройства (ЗУ)

5) устройство вывода информации.

Постоянное запоминающее устройство (ПЗУ) содержит некоторую программу. Программы могут быть загружены в запоминающее устройство с произвольной выборкой (ЗУПВ) и из внешнего запоминающего устройства (ВЗУ). Это программы пользователя.

Основные характеристики микропроцессора:

- Разрядность 8 бит

- Адресуемая память V=2 16 байт=2 6 *2 10 байт=64килобайт,

- Быстродействие 625000 опер/сек

- Технология 6 микрон

Структурная схема микропроцессора состоит из двух частей: операционной части и управляющей части. Схема изображена на рисунке 3.3


Рисунок 3.3 – Структурная схема МП КР580ВМ80А

Состав операционной части.

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

2) БР1 (буферный регистр аккумулятора) – хранит один операнд на время операции в АЛУ. Этот регистр хранит операнд из аккумулятора.

3) БР2 (буферный регистр) – хранит второй операнд на время операции в АЛУ.

4) А (аккумулятор) – восьмиразрядный главный регистр микропроцессора, хранит один операнд до операции в АЛУ и результат после операции в АЛУ.

5) РгФл (регистр флагов) – восьмиразрядный регистр, хранит пять признаков результата в АЛУ:

- ZF – признак нулевого результата (ZF=1, если результат 000000002)

- ACF – признак дополнительного переноса (ACF=1, если есть перенос из 4-го разряда в 5-й).

- SF – признак знака (SF=восьмому биту результата).

- PF– признак четности (PF=1, если количество единиц в восьмиразрядном результате чётное).

7) СДК (схема десятичной коррекции) – предназначена для коррекции результата при выполнении операций над двоично-десятичными числами.

Состав управляющей части:

1) РгК(регистр команд) – хранит первый байт команды;

2) DC (дешифратор команд) – дешифрирует команду; подключает одну из логических схем в устройстве управления, которая вырабатывает определенный набор управляющих сигналов (Yi) для выполнения этой команды;

3) УУ (устройство управления) – формирует внутренние управляющие сигналы (Yi) для внутренних блоков МП и внешние управляющие сигналы для системы, а также воспринимает управляющие сигналы из системы;

4) РС (программный счётчик) – шестнадцатиразрядный адресный регистр для хранения следующего адреса памяти, по которому будет обращаться МП;

5) RA(регистр адреса) – шестнадцатиразрядный адресный регистр для хранения текущего адреса памяти, по которому в данный момент обращается МП;

6) SP(указатель стека ) – шестнадцатиразрядный адресный регистр для хранения адреса последней занятой ячейки стековой памяти ( вершины стека);

7) СИД (схема инкремент – декремент ) – изменяет на единицу содержимое регистров SP, PC, RA.

8) БАдр (буфер данных ) – буферная схема шины адреса – схема с тремя состояниями для сопряжения адресных выходов МП А15 – А0 с регистром адреса (RA).

9) БД (буфер данных ) – буферная схема шины данных – схема с 3-мя состояниями для сопряжения внешних выводов D0 – D7 с внутренней шиной данных.

Формат данных и команд

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

Для команд используются одно-, двух- и трехбайтовые форматы. Большинство команд является однобайтовыми.

Однобайтовый формат: операнд или номер (адрес) устройства ввода-вывода

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

Трехбайтовый формат команды: байты трехбайтовой команды имеют следующее назначение: в пер­вом указывается вид выполняемой операции, следующие два байта ис­пользуются для указания двухбайтового адреса команды (при выполнении безусловных и условных переходов, обращении к подпро­граммам), или адреса ячейки оперативной памяти, содержимое которой является операндом, или двухбайтового операнда. Во всех случаях байт В2 является младшим, байт В3 — старшим.

Способы адресации

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

Прямая адресация. При этом способе адресом операнда является ука­занный в команде (в байте кода операции) адрес регистра микропроцес­сора. Адреса регистров приведены в следующей таблице:

Под М понимается ячейка оператив­ной памяти, адресом которой служит со­держимое пары регистров HL.

Непосредственная адресация. При этом способе адресации операнды (один или два) задаются непосредственно в команде вслед за байтом кода операции во втором байте либо во втором и третьем байтах.

Команда с мнемоникой ADI предусматривает суммирование содержимого аккумулятора с числом, приведенным во втором байте команды (в примере это число равно 4С(6).

Команда MVI производит пересылку числа, приведенного во вто­ром байте команды (в примере это число равно 4Е(6), в регистр D, адрес которого (010) указан в разрядах первого байта команды.

Команда LXI производит пересылку чисел, приведенных во втором и третьем байтах (в примере — чисел 65(6 и А5 соответственно в младший и старший регистры пары регистров DE. В разрядах D5D4D3 первого байта пара регистров указана адресом (010) одного из реги­стров этой пары.

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

Примеры команд с косвенной адресацией.

LDAX В 00 001 010 А ←[(ВС)]

STAX В 00 000 010 [(ВС)]←(А)

Здесь запись [(ВС)] означает ячейку памяти, адресом которой служит содержимое пары регистров ВС.

По команде LDAX В аккумулятор загружается содержимым ячейки оперативной памяти, адресом которой служит содержимое пары реги­стров ВС (для указания именно этой пары регистров в разрядах D5D4D3 команды приведен адрес 001 регистра С).

По команде STAX В содержимое аккумулятора запоминается в ячейке, адресом которой служит содержимое пары регистров ВС (для указания пары регистров в разрядах D5D4D$ команды приведен адрес ООО регистра В)

Контрольные вопросы:

1. Какие функции выполняют элементы управляющей части ?

2. Какие функции выполняют элементы операционной части?

3. Какие функции выполняют регистры?

4. Какие признаки хранит регистр флагов?

5. Какие существуют форматы данных и команд?

6. Назовите способы адресации микропроцессора.

© 2014-2022 — Студопедия.Нет — Информационный студенческий ресурс. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав (0.006)

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