Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Тема лекции 2. Архитектура микропроцессора I 8086.






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

-структурную схему ЭВМ;

-средства и способы доступа к элементам структурной схемы ЭВМ; -организацию и разрядность интерфейсов ЭВМ;

-набор и доступность регистров;

-организацию и способы адресации памяти;

-способы представления и форматы данных ЭВМ;

-набор машинных команд ЭВМ;

-форматы машинных команд;

-обработку нештатных ситуаций (прерываний).

Все современные ЭВМ обладают некоторыми общими и индивидуальными свойствами архитектуры. Индивидуальные свойства присущи только конкретной модели компьютера. Наличие общих архитектурных свойств обусловлено тем, что большинство типов существующих машин принадлежат 4 и 5-му поколениям ЭВМ фон-неймановской архитектуры. К числу общих архитектурных свойств и принципов можно отнести:

-Принцип хранимой программы. Согласно ему, код программы и ее данные находятся в одном адресном пространстве в оперативной памяти.

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

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

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

-Безразличие к целевому назначению данных. Машине все равно, какую логическую нагрузку несут обрабатываемые ею данные.

Набор регистров.

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

-16 пользовательских регистров;

- 16 системных регистров.

Пользовательские регистры

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

-восемь 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.

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

Все регистры этой группы позволяют обращаться к своим «младшим» частям; использовать для самостоятельной адресации можно только младшие 16- и 8-битные части этих регистров. Старшие 16 бит этих регистров как самостоятельные объекты недоступны. Так как регистры общего назначения находятся в процессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:

- eax/ax/ah/al (Accumulator register) — аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;

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

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

- edx/dx/dh/dl (Data register) — регистр данных. Так же как и регистр еах/ах/ ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно. Следующие два регистра используются для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит:

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

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

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

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

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

Сегментные регистры

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

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

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

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

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

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

4. Регистры состояния и управления

В микропроцессор включены несколько регистров, которые постоянно содержат информацию о состоянии как самого микропроцессора, так и программы, команды которой в данный момент загружены на конвейер. К этим регистрам относятся: 1- регистр флагов eflags/flags; 2- регистр указателя команды eip/ip.

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

eflags/flags (flag register) — регистр флагов. Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086.

Флаги регистра eflags/flags можно разделить на три группы:

1- 8 флагов состояния. Эти флаги могут изменяться после выполнения машинных команд. Флаги состояния регистра eflags отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм.

2- 1 флаг управления. Обозначается как df (Directory Flag). Он находится в 10­м бите регистра eflags и используется цепочечными командами.

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

Флаги состояния.

Мне мони ка флага Флаг Номе р бита в eflags Содержание и назначение
cf Флаг переноса(Car ry Flag)   1 — арифметическая операция произвела перенос из старшего бита результата. Старшим является 7-й, 15-й или 31-й бит в зависимости от размерности операнда; 0 — переноса не было
pf Флаг паритетами ty Flag)   1 — 8 младших разрядов (этот флаг — только для 8 младших разрядов операнда любого размера) результата содержат четное число единиц; 0 — 8 младших разрядов результата содержат нечетное число единиц
af Вспомогател ь-ный флаг переноса (Auxiliary carry Flag)   Только для команд, работающих с BCD- числами. Фиксирует факт заема из младшей тетрады результата: 1 — в результате операции сложения был произведен перенос из разряда 3 в старший разряд или при вычитании был заем в разряд 3 младшей тетрады из значения в старшей тетраде; 0— переносов и заемов в (из) 3 разряд(а) младшей тетрады результата не было
zf Флаг нуля(Zero Flag) Флаг знака(Sign Flag) б 1 — результат нулевой; 0 — результат ненулевой
sf     Отражает состояние старшего бита результата (биты 7, 15 или 31 для 8, 16 или 32­разрядных операндов соответственно):

 

      1— старший бит результата равен 1; 0— старший бит результата равен 0
of Флаг переполнени я(Overflow Flag)   Флаг of используется для фиксирования факта потери значащего бита при арифметических операциях: 1— в результате операции происходит перенос (заем) в (из) старшего, знакового бита результата (биты 7, 15 или 31 для 8, 16 или 32­разрядных операндов соответственно); 0 — в результате операции не происходит переноса (заема) в (из) старшего, знакового бита результата
iopl Уровень привилегий ввода- вывода^^^ /Output Privilege Level) 12, 13 Используется в защищенном режиме работы микропроцессора, для контроля доступа к командам ввода-вывода в зависимости от привилегированности задачи
nt Флаг вложенности задачи (Nested Task)   Используется в защищенном режиме работы микропроцессора для фиксации того факта, что одна задача вложена в другую

 

Системные флаги
tf Флаг трассировки (Trace Flag)   Предназначен для организации пошаговой работы микропроцессора: I — микропроцессор генерирует прерывание с номером 1 после выполнения каждой машинной команды. Может использоваться при отладке программ, в частности отладчиками; 0 — обычная работа
if Флаг прерывания (Interrapt ena ble Flag)   Предназначен для разрешения или запрещения (маскирования) аппаратных прерываний (прерываний по входу INTR): I — аппаратные прерывания разрешены; 0 — аппаратные прерывания запрещены
rf Флаг возобновления (Resume Flag)   Используется при обработке прерываний от регистров отладки

vm Флаг виртуального8086 (Virtual 8086 Mode)   Признак работы микропроцессора в режиме виртуального 8086: 1 — процессор работает в режиме виртуального 8086; 0 — процессор работает в реальном или защищенном режиме
ас Флаг контроля выравнивания (Alignment Check)   Предназначен для разрешения контроля выравнивания при обращениях к памяти, И кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут возбуждать исключительную ситуацию

 

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

Основная литература: 5[16-36], 38[33-44], 3[7-12],

Дополнительная литература: 19[10-15].

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

1.Что входит в понятие Архитектура ЭВМ?

2. В каких регистрах содержится информация об адресах сегментов?

3. Какие регистры можно использовать для подсчета числа циклов?

4. Какие регистры используются для адресации исполняемой программы?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.