Лекция  7  Регистры микропроцессора

Лекции по предмету «Информатика»
Информация о работе
  • Тема: Лекция  7  Регистры микропроцессора
  • Количество скачиваний: 35
  • Тип: Лекции
  • Предмет: Информатика
  • Количество страниц: 15
  • Язык работы: Русский язык
  • Дата загрузки: 2014-11-26 07:42:14
  • Размер файла: 61.89 кб
Помогла работа? Поделись ссылкой
Информация о документе

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

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

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

Лекция 7 Регистры микропроцессора

Сначала рассмотрим режимы работы процессора.
Все 32-разрядные процессоры Intel и совместимые, начиная с 80386-го, могут выполнять программы в нескольких режимах. Режимы процессора предназначены для выполнения программ в различных средах; в разных режимах возможности микропроцессора неодинаковы, потому что команды выполняются по-разному. В зависимости от режима процессора изменяется схема управления памятью системы и задачами. Процессоры могут работать в трех режимах:
• реальном,
• защищенном,
• виртуальном реальном режиме (реальном внутри защищенного).
В данной лекции рассмотрим работу процессора в реальном режиме.

Реальный режим
Это режим работы первых 16-битовых микропроцессоров. Наличие его обусловлено тем, что необходимо обеспечить в новых моделях микропроцессоров функционирование программ, разработанных для старых моделей.
Любой современный микропроцессор, находясь в реальном режиме, очень мало отличается от старого (первого) i8086. Это лишь его более быстрый аналог с уве¬личенным (до 32 бит) размером всех регистров, кроме сегментных. Чтобы по¬лучить доступ ко всем остальным архитектурным и функциональным новшест¬вам микропроцессора, необходимо перейти в защищенный режим.
Основные характеристики реального режима
• объем адресуемой памяти - 1 Мб (=220, у них 20-разрядная шина адреса)
• поддерживается выполнение всего одной программы Þ нет потребности в организации защиты программ от взаимного вли¬яния
• поддерживается сегментированная модель памяти (оперативная память делится на отдельные участки – сегменты)
• сегмент имеет длину не более 64 Кбайт (216 )
• адрес сегмента располагается в одном из сегментных регистров
• отсутствуют аппа¬ратные средства контроля доступа к сегменту Þ любая программа может обратиться к любому адресу в памяти.
• формирование физического адреса происходит по правилам реального режима:
Например:
для определения физического адреса содержимое сегментного регистра умножается на 16 за счет добавления справа к младшим битам четырех нулей, после чего к полученному значению прибавляется содержимое регистра внутрисегментного смещения. Получается двадцати - битовое значение (20-разрядная шина адреса).

Организация оперативной памяти
Физическая память, к которой микропроцессор имеет доступ по шине адреса, называется оперативной памятью (или оперативным запоминающим устройством - ОЗУ).
ОП организована как последовательность байтов.
Каждому байту соответствует уникальный адрес (его номер), который называется физическим адресом.
Диапазон значений адресов зависит от разрядности шины адреса микропроцессора.
Для i486 и Pentium он находится в диапазоне от 0 до 232 = 4 Гбайт (32-разрядная шина адреса).
Механизм управления памятью полностью аппаратный, т.е. программа сама не может сформировать физический адрес памяти на адресной шине.
Понятие о сегментированной модели памяти
Память для программы делится на непрерывные области памяти, называемые сегментами.
Сама программа может обращаться только к данным, которые находятся в этих сегментах.
Сегмент представляет собой независимый, поддерживаемый на аппаратном уровне блок памяти.

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

Операционная система (а не сама программа) размещает сегменты программы в ОП по определенным физическим адресам, а значения этих адресов записывает в определенные места, в зависимости от режима работы микропроцессора:
• в реальном режиме адреса помещаются непосредственно в специальные сегментные регистры (cs, ds, ss, es, gs, fs);

Для доступа к данным внутри сегмента обращение производится относительно начала сегмента линейно, т.е. начиная с 0 и заканчивая адресом, равным размеру сегмента. Этот адрес называется смещением (offset).
Таким образом, для обращения к конкретному физическому адресу ОП необходимо определить адрес начала сегмента и смещение внутри сегмента.
Физический адрес принято записывать парой этих значений, разделенных двоеточием
segment : offset
Например, 0040:001Ch; 0000:041Ch; 0020:021Ch; 0041:000Ch.
Пример:
Адрес, локализующий положение сегмента в оперативной памяти, содержится в одном из специальных сегментных регистров процессора, но он тоже 16-разрядный. Для того, чтобы при помощи этого адреса можно было перекрыть все пространство ОЗУ (в реальном режиме 1 Мб), со стороны младшего байта его дополняют четырьмя нулями.
Например, если содержимое сегментного регистра: 0001.1101.1000.1111 (или 1D8F16) то адрес начала соответствующего сегмента будет равен: 0001.1101.1000.1111.0000 (или 1D8F016). Таким образом можно искусственно разделить всю память на сегменты, начинающиеся по адресам, кратным 1610. Предположим, что внутрисегментное смещение нашей ячейки задано числом 1001.1011.0010.0101 или 9В2516, в этом случае ее реальный адрес будет равен сумме адреса сегмента и внутрисегментного смещения: 1D8F016+9B2516 = 2741516 (рис. 4).

Реализация стека
Поясним понятие стековой памяти.
Стек традиционно используется, например, для сохранения содержимого регистров, используемых программой, перед вызовом подпрограммы, которая, в свою очередь, будет использовать регистры процессора "в своих личных целях". Исходное содержимое регистров извлекается из стека после возврата из подпрограммы. Другой распространенный прием - передача подпрограмме требуемых ею параметров через стек. Подпрограмма, зная, в каком порядке помещены в стек параметры, может забрать их оттуда и использовать при своем выполнении.
Отличительной особенностью стека является своеобразный порядок выборки содержащихся в нем данных: в любой момент времени в стеке доступен только верхний элемент, т.е. элемент, загруженный в стек последним. Выгрузка из стека верхнего элемента делает доступным следующий элемент.
Элементы стека располагаются в области памяти, отведенной под стек, начиная с вершины стека (т.е. с его максимального адреса) по последовательно уменьшающимся адресам. Адрес верхнего, доступного элемента хранится в регистре-указателе стека SP. Как и любая другая область памяти программы, стек должен входить в какой-то сегмент или образовывать отдельный сегмент. В любом случае сегментный адрес этого сегмента помещается в сегментный регистр стека SS. Таким образом, пара регистров SS:SP описывают адрес доступной ячейки стека: в SS хранится сегментный адрес стека, а в SP - смещение последнего сохраненного в стеке данного.

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

Стек ( stack – стопка)
Стек – это специальная структура данных в памяти. По способу записи эту структуру еще часто называют LIFO (Last In First Out)– последним пришел, первым ушел. Стек представляет собой, как бы обойму, в которую вместо патрона загоняется очередная переменная и та переменная, которая поступила в стек последней извлекается первой.

Запись нового слова производится в верхнюю ячейку, при этом все ранее записанные слова сдвигаются вниз, в соседние ячейки. Считывание возможно только из верхней ячейки памяти. Если производится считывание с удалением, все остальные слова в памяти сдвигаются в верх.

Возможен также способ записи FIFO ("first-in-first-out") –по принципу: первым пришел, первым ушел.

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

Стек можно представить в виде трубки с подпружиненным дном, расположенной вертикально. Верхний конец трубки открыт, в него можно добавлять, или, как говорят, заталкивать элементы. Общепринятые английские термины в этом плане очень красочны, операция добавления элемента в стек обозначается push, в переводе "затолкнуть, запихнуть". Новый добавляемый элемент проталкивает элементы, помещенные в стек ранее, на одну позицию вниз. При извлечении элементов из стека они как бы выталкиваются вверх, по-английски pop ("выстреливают").
Операции со стеком поддерживаются двумя регистрами:
1. Регистр сегмента стека (SS). Стеки размещаются в памяти. Количество стеков в системе ограничивается только максимальным числом сегментов. Размер стека не может превышать 4 Гбайт, что соответствует максимальному размеру сегмента (232) бита для процессора i486. В каждый момент времени доступен только один стек, значение сегмента которого содержится в регистре SS. Этот стек называется текущим, однако далее слово "текущий" будет, как правило, опускаться, а текущий стек будет называться просто "стеком". Регистр SS автоматически используется процессором для выполнения всех операций со стеком.
2. Регистр указателя стека (SP). В регистре SP содержится относительный адрес вершины стека в текущем сегменте стека. Его значение используется командами PUSH (добавление в стек) и POP (извлечение из стека), при вызове подпрограмм и при возврате исключениями и прерываниями. При занесении элемента размером в слово (2байта) в стек (смотри Рисунок 2-8), процессор уменьшает значение регистра SP на 2, а затем записывает следующий элемент по адресу новой вершины (SP -2)., а содержимое SP уменьшается еще на2 (SP-4) и т.д.. При извлечении данных из стека, процессор копирует элемент в выходную переменную, расположенный по адресу вершины, а затем увеличивает значение регистра указателя стека. Иными словами, стек растет вниз, в сторону уменьшения адресов.
Оперативная память
адрес содержимое
0
2
4
... ...
SP элементы <=вершина стека
SP - 2 стека
SP - 4
... ...
-2
Рисунок. Стеки
push X ~ SP := SP − 2;
m [SP] := X;
pop X ~ X := m [SP] ;
SP := SP + 2;
Здесь через m[SP] обозначается содержимое слова памяти с адресом SP (m - сокращение от memory).
Виды регистров процессора.
Как следует из названия, пользовательскими регистры называются потому, что программист может использовать их при написании своих программ. К этим регистрам относятся (рис. 1):
• Четыре 32-битных регистров, которые могут использоваться программистами для хранения данных и адресов (их еще называют регистрами общего назначения
• (РОН)):
o eax/ax/ah/al;
o ebx/bx/bh/bl;
o edx/dx/dh/dl;
o ecx/cx/ch/cl;
• Два 32-битных индексных регистра, которые могут использоваться для вычисления адресов, чаще всего при работе с массивами данных
o esi/si;
o edi/di;
• Два 32-битных регистра указателя, которые могут использоваться для вычисления адресов внутри сегмента
o ebp/bp;
o esp/sp.
• шесть регистров сегментов: cs, ds, ss, es, fs, gs;
• регистры состояния и управления:
o регистр флагов eflags/flags;
o регистр указателя команды eip/ip.

Рис. 1. Пользовательские регистры микропроцессоров i486 и Pentium
Почему многие из этих регистров приведены с наклонной разделительной чертой?
Нет, это не разные регистры — это части одного большого 32-разрядного регистра. Их можно использовать в программе как отдельные объекты.
Так сделано для обеспечения работоспособности программ, написанных для младших 16-разрядных моделей микропроцессоров фирмы Intel, начиная с i8086.
Микропроцессоры i486 и Pentium имеют в основном 32-разрядные регистры. Их количество, за исключением сегментных регистров, такое же, как и у i8086, но размерность больше, что и отражено в их обозначениях — они имеют
приставку e (Extended).
В настоящее время регистры общего назначения могут быть 64-разрядными и имеют приставку r :
o rax/eax/ax/ah/al;
o rbx/ebx/bx/bh/bl;
o rdx/edx/dx/dh/dl;
o rcx/ecx/cx/ch/cl;
В настоящее время индексные регистры общего назначения могут быть 32-разрядными и (имеют приставку е). По частям не используются.
o esi/si;
o edi/di;
В настоящее время регистры указатели общего назначения могут быть 32-разрядными и имеют приставку е. По частям не используются.
o eвp/вp.
o esp/sp.
Разберемся подробнее с составом и назначением пользовательских регистров.
Регистры общего назначения
Все регистры этой группы позволяют обращаться к своим
“младшим” частям (см. рис. 1).
Рассматривая этот рисунок, заметьте, что использовать для самостоятельной адресации можно только младшие 16 и 8-битные части этих регистров. Старшие 16 бит этих регистров как самостоятельные объекты недоступны. Это сделано, как мы отметили выше, для совместимости с младшими 16-разрядными моделями микропроцессоров фирмы Intel.
Перечислим регистры, относящиеся к группе регистров общего назначения. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:
• eax/ax/ah/al (Accumulator register) — аккумулятор.
Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;
• ebx/bx/bh/bl (Base register) — базовый регистр.
Применяется для хранения базового адреса некоторого объекта в памяти; может также использоваться для хранения промежуточных данных.
• ecx/cx/ch/cl (Count register) — регистр-счетчик.
Применяется в командах, производящих некоторые повторяющиеся действия (циклические). Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды.
К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx;
• edx/dx/dh/dl (Data register) — регистр данных.
Так же, как и регистр eax/ax/ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.
Сейчас регистры общего назначения могут быть 64-разрядными и имеют в наименовании приставку r :
o rax/eax/ax/ah/al;
o rbx/ebx/bx/bh/bl;
o rdx/edx/dx/dh/dl;
o rcx/ecx/cx/ch/cl;
Можно использовать младшие 32-разрядные части этих регистров (старшие части самостоятельно использовать нельзя).
В свою очередь можно самостоятельно использовать младшие 16-разрядные части 32-разрядных регистров (старшие части регистров самостоятельно использовать нельзя.).
В свою очередь можно самостоятельно использовать младшие 8-разрядные части 16-разрядных регистров (старшие части регистров самостоятельно использовать нельзя.).
Следующие два регистра (они имеют еще название индексные) используются для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32 или16 бит (эти регистры могут использоваться только полностью, к частям регистра доступа нет, в отличии от первых четырех РОН). Могут использоваться программистом при написании программ.
• esi/si (Source Index register) — индекс источника.
Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике (при работе с массивами данных);
• edi/di (Destination Index register) — индекс приемника (получателя).
Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике (при работе с массивами данных);
В программной модели микропроцессора существуют специальные регистры указатели,
каждый из которых может иметь длину 32 или16 бит (эти регистры могут использоваться только полностью, к частям регистра доступа нет, в отличии от первых четырех РОН). Могут использоваться программистом при написании программ.
• esp/sp (Stack Pointer register) — регистр указателя стека.
Содержит указатель вершины (адреса) стека в текущем сегменте стека.
• ebp/bp (Base Pointer register) — регистр указателя базы.
Предназначен для организации произвольного доступа к данным внутри соответствующего сегмента (величину смещения внутри выбранного сегмента)
Не спешите пугаться столь жесткого функционального назначения регистров АЛУ. На самом деле, большинство из них могут использоваться при программировании для хранения операндов практически в любых сочетаниях. Но, как мы отметили выше, некоторые команды используют фиксированные регистры для выполнения своих действий. Это нужно обязательно учитывать.
Использование жесткого закрепления регистров для некоторых команд позволяет более компактно кодировать их машинное представление. Знание этих особенностей позволит вам при необходимости хотя бы на несколько байт сэкономить память, занимаемую кодом программы.
Сегментные регистры
В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs.
Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel. Она заключается в том, что микропроцессор аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами. Соответственно, такая организация памяти называется сегментной.
Для того чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени, и предназначены сегментные регистры. Фактически, с небольшой поправкой, как мы увидим далее, в этих регистрах содержатся адреса памяти с которых начинаются соответствующие сегменты. Логика обработки машинной команды построена так, что при выборке команды, доступ к данным программы или к стеку неявно используются адреса во вполне определенных сегментных регистрах. Микропроцессор поддерживает следующие типы сегментов:
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).
В настоящее время сегментные регистры могут быть 32-разрядные, имеют приставку е. Пользователь доступа к сегментным регистрам не имеет, а адреса распределяются ОС.
Регистры состояния и управления (пользователю недоступны)
В микропроцессор включены несколько регистров (см. рис. 1), которые постоянно содержат информацию о состоянии как самого микропроцессора, так и программы, команды которой в данный момент загружены. К этим регистрам относятся:
• регистр флагов eflags/flags;
• регистр указателя команды eip/ip.
Используя эти регистры, можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора. Рассмотрим подробнее назначение и содержимое этих регистров:
eflags/flags (flag register) — регистр флагов. Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086. На рис. 2 показано содержимое регистра eflags.

Рис. 2. Содержимое регистра eflags
Исходя из особенностей использования, флаги регистра eflags/flags можно разделить на три группы:
• 8 флагов состояния. Эти флаги могут изменяться после выполнения машинных команд.
Флаги состояния регистра eflags отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм. В табл. 1 приведены флаги состояния и указано их назначение;
• 1 флаг управления. Обозначается df (Directory Flag).
Он находится в 10-м бите регистра eflags и используется цепочечными командами. Значение флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу (df = 0) либо наоборот, от конца строки к ее началу (df = 1).
Для работы с флагом df существуют специальные команды: cld (снять флаг df) и std (установить флаг df).
Применение этих команд позволяет привести флаг df в соответствие с алгоритмом и обеспечить автоматическое увеличение или уменьшение счетчиков при выполнении операций со строками;
• 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.
Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к прерыванию работы программы. В табл. 2 перечислены системные флаги, их назначение.
Таблица 1. Флаги состояния
Мнемоника флага Флаг Номер бита в eflags Содержание и назначение
cf Флаг переноса
(Carry Flag) 0 1 — арифметическая операция произвела перенос из старшего бита результата. Старшим является 7, 15 или 31-й бит в зависимости от размерности операнда;
0 — переноса не было
pf Флаг паритета
(Parity Flag) 2 1 — 8 младших разрядов (этот флаг — только для 8 младших разрядов операнда любого размера) результата содержат четное число единиц;
0 — 8 младших разрядов результата содержат нечетное число единиц
af Вспомогательный флаг переноса
(Auxiliary carry Flag) 4 Только для команд работающих с BCD-числами. Фиксирует факт заема из младшей тетрады результата:
1 — в результате операции сложения был произведен перенос из разряда 3 в старший разряд или при вычитании был заем в разряд 3 младшей тетрады из значения в старшей тетраде;
0 — переносов и заемов в(из) 3 разряд(а) младшей тетрады результата не было
zf Флаг нуля (Zero Flag) 6 1 — результат нулевой;
0 — результат ненулевой
sf Флаг знака
(Sign Flag) 7 Отражает состояние старшего бита результата (биты 7, 15 или 31 для 8, 16 или 32-разрядных операндов соответственно):
1 — старший бит результата равен 1;
0 — старший бит результата равен 0
of Флаг переполнения
(Overflow Flag) 11 Флаг of используется для фиксирования факта потери значащего бита при арифметических операциях:
1 — в результате операции происходит перенос (заем) в(из) старшего, знакового бита результата (биты 7, 15 или 31 для 8, 16 или 32-разрядных операндов соответственно);
0 — в результате операции не происходит переноса (заема) в(из) старшего, знакового бита результата
iopl Уровень Привилегий ввода-вывода
(Input/Output Privilege Level) 12, 13 Используется в защищенном режиме работы микропроцессора для контроля доступа к командам ввода-вывода в зависимости от привилегированности задачи
nt флажок вложенности задачи
(Nested Task) 14 Используется в защищенном режиме работы микропроцессора для фиксации того факта, что одна задача вложена в другую
Таблица 2. Системные флаги
Мнемоника флага Флаг Номер бита в eflags Содержание и назначение
tf Флаг трассировки
(Trace Flag) 8 Предназначен для организации пошаговой работы микропроцессора.
1 — микропроцессор генерирует прерывание с номером 1 после выполнения каждой машинной команды. Может использоваться при отладке программ, в частности отладчиками;
0 — обычная работа
if Флаг прерывания
(Interrupt enable Flag) 9 Предназначен для разрешения или запрещения (маскирования) аппаратных прерываний (прерываний по входу INTR).
1 — аппаратные прерывания разрешены;
0 — аппаратные прерывания запрещены
rf Флаг возобновления
(Resume Flag) 16 Используется при обработке прерываний от регистров отладки.
vm Флаг виртуального
(Virtual 8086 Mode) 17 Признак работы микропроцессора в режиме виртуального 8086.
1 — процессор работает в режиме виртуального 8086;
0 — процессор работает в реальном или защищенном режиме
ac Флаг контроля выравнивания
(Alignment Check) 18 Предназначен для разрешения контроля выравнивания при обращениях к памяти. Используется совместно с битом am в системном регистре cr0. К примеру, Pentium разрешает размещать команды и данные с любого адреса. Если требуется контролировать выравнивание данных и команд по адресам кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут возбуждать исключительную ситуацию
eip/ip (Instraction Pointer register) — регистр-указатель команд.
Регистр eip/ip имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра eip/ip.

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








Вопросы к лекции 7. Регистры МП.

1. В каких режимах может работать микропроцессор (стр. 1)
Что зависит от вида режима? (стр. 1)
2. Понятие реального (однозадачного) режима работы процессора.
Его основные характеристики (стр.1)
3. Какая память называется оперативной (ОЗУ) (стр. 2)
Как она организована?
4. Какой адрес оперативной памяти (ОП) называется физическим? (стр. 2)
От чего зависит диапазон значения адресов ОП? Привести пример. (стр.2)
5. Может ли программа сама сформировать физический адрес памяти на адресной шине? (стр. 2).
6. Понятие о сегментной модели памяти:
- определение сегмента (стр. 2);
- какие сегменты используются в МП Intel (стр. 2);
- в какие регистры в реальном режиме работы МП помещаются адреса сегментов
(перечислить сегментные регистры) (стр. 2);
- за счет чего получается доступ к данным внутри сегмента? (стр. 2);
- как принято записывать физический адрес (из каких частей он состоит)? ( стр. 2)
Привести пример.
- как рассчитать реальный физический адрес памяти ? (стр. 2-3)
7. Понятие стековой памяти:
- для чего используется стековая память? (стр. 3);
- где располагается стек? (стр. 3);
- пара каких регистров описывает адрес стека? Назначение каждого (стр.3);
- способы записи в стек (LIFO, FIFO) (стр. 4);
- какие две команды используются в стеке? (стр. 5);
- как изменяется адрес вершины стека в регистре SP при записи в стек и при
чтении из стека? (стр. 5).

8. Заполнить таблицу регистров МП.
На какие три группы делятся флаги регистра ФЛАГОВ?
Привести по три примера флагов из каждой группы с описанием назначения каждого.

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