Изучение архитектуры микропроцессоров

Автор работы: Пользователь скрыл имя, 26 Февраля 2013 в 22:31, лабораторная работа

Описание

Целью работы является исследование архитектурных характеристик от-
дельных микропроцессоров и приобретение навыков записи программ в мне-
мокодах и машинных кодах.

Работа состоит из  1 файл

Арх Лабораторная работа №1.doc

— 102.50 Кб (Скачать документ)

регистра ES), а регистр BP адресуется к памяти относительно регистра SS (сег-

ментный регистр стека).

       Стек находится  в сегменте, на который указывает  регистр SS. Напри-

мер:

         :

         push bp

         mov bp,sp

         mov ax,[bp+4]

         :

       Здесь выполняется  обращение к сегменту стека  для загрузки в AX пер-

вого параметра, передаваемого при вызове Турбо Си подпрограммы на Ас-

семблере. Если говорить кратко, то регистр BP создан для обеспечения работы

с параметрами, локальными переменными  другой адресации к памяти с ис-

пользованием стека.

       Регистр SP называется также указателем стека. Это "наименее общий"

из регистров общего назначения, поскольку он практически всегда использует-

ся для специальной цели - обеспечения  стека. Стек - это область памяти, в

которой можно сохранять значения и из которой они могут затем извлекаться

по дисциплине "последний –  пришел – первый - ушел" (LIFO). То есть по-

следнее сохраненное в стеке  значение будет первым значением, которое  вы

получите при чтении из стека.

       Регистр SP в  каждый момент времени указывает  на вершину стека. Дей-

ствие, состоящее в занесении  значений в стек, называют также "заталкивани-

ем" (pushing) в стек. В самом деле, инструкция PUSH используется для зане-

сения значений в стек. Аналогично, действие, состоящее в извлечении (выбор-

ке) значений из стека, называют также "выталкиванием" (popping) из стека

(для этого используется инструкция POP).

      Внимание! Стек используется  всякий раз, когда вы вызываете  подпро-

грамму. Кроме того, стек используют некоторые системные ресурсы, когда  они

прерывают процессор, чтобы выполнить свои функции. Если вы измените SP,

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

недоступным, когда он потребуется  системным ресурсам.

 

       1.2.5 Указатель  инструкций

       Указатель инструкций (регистр IP) всегда содержит смещение в памя-

ти, по которому хранится следующая выполняемая  инструкция. Когда выпол-

няется  одна инструкция, указатель инструкций перемещается таким образом,

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

но  следующей выполняемой инструкцией  является инструкция, хранимая по

следующему  адресу памяти, но некоторые инструкции, такие, как вызовы или

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

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

программы.

       Значение счетчика инструкций  нельзя прочитать или записать  непосред-

ственно. Загрузить в указатель инструкций новое значение может только спе-

циальная  инструкция перехода (аналогичная только что описанным).

       Указатель инструкций сам по  себе не определяет адрес, по  которому

находится следующая выполняемая инструкция. Картину здесь опять усложня-

ет  сегментная организация памяти процессора 8086. Для извлечения инст-

рукции  предусмотрен регистр CS, где хранится базовый адрес, при этом указа-

тель  инструкций задает смещение относительно этого базового адреса.

 

       1.2.6 Сегментация памяти процессора 8086 и сегментные регистры

 

       Основной предпосылкой сегментации  является следующее: процессор

8086 может адресоваться к 1 мегабайту  памяти. Для адресации ко всем  ячейкам

адресного пространства в 1 мегабайт необходимы 20-разрядные сегментные ре-

гистры. Однако процессор 8086 использует только 16-разрядные указатели на

ячейки памяти. Вспомним, например, что для ссылки на память используется

16-разрядный регистр BX. Как же  тогда согласовать 16-разрядные  указатели

процессора 8086 и 20-разрядные адреса?

       Ответ состоит  в том, что процессор 8086 использует  двухступенчатую

схему адресации. Да, используются 16-разрядные указатели, но эта форма

представляет собой только часть  полной схемы адресации. Каждый 16-

разрядный указатель памяти или  смещение комбинируется с содержимым 16-

разрядного сегментного регистра для формирования 20-разрядного адреса па-

мяти.

 

 

 

             1   F       D       5       - 16-разрядный сегментный  регистр

   +             1       2       3      C       - 16-разрядное смещение

 

 

         2       0       F       8      C       - 20-разрядный адрес памяти

 

 

                  Рисунок 1.5 - 20-разрядные адреса памяти.

 

                                                                             

         Сегменты  и смещения комбинируются следующим  образом: значение

сегмента сдвигается влево на 4 разряда (то есть умножается на 16), а затем

складывается со смещением, как  показано на рисунке 1.5.

         Рассмотрим, например, следующий фрагмент программы:

           :

           mov ax,1000h

           mov ds,ax

           mov si,201h

           mov dl,[si]

           :

        Здесь для сегментного регистра DS устанавливается значение 1000h, SI

устанавливается в значение 201h. Мы можем представить их в виде "сегмент:

смещение" - 1000:201h. Адрес, из которого загружаются данные в DL, пред-

ставляет собой:

   ((DS * 16) + SI) или ((1000h * 16) + 201h)

         Итак, программа  получает доступ к полному  адресному пространству

в 1 мегабайт с помощью использования  только пары "сегмент: смещение". Все

инструкции и режимы адресации  процессора 8086 по умолчанию работают от-

носительно того или иного сегментного регистра, хотя в некоторых инструкци-

ях можно явно указать, что нужно  использовать желаемый сегментный ре-

гистр. Обычно редко требуется загружать  значение непосредственно в сегмент-

ный регистр, а вместо этого сегментные регистры в программе имеют символи-

ческие имена сегментов, которые  в ходе ассемблирования, компоновки и вы-

полнения превращаются в числа. Это необходимо, поскольку нет  способа ска-

зать заранее, где в памяти будет  находиться данный сегмент: это зависит  от

версии DOS, числа и размера резидентных в памяти программ, а также потреб-

ности в памяти остальной части  программы. Использование имен сегментов  по-

зволяет Турбо Ассемблеру и операционной системе DOS выполнять подобные

вычисления.

         Наиболее  общим именем сегмента для размещения данных является

@Datа, которое в упрощенных  директивах определения сегментов  используется

для ссылки на используемый по умолчанию  сегмент данных. Например:

       dosseg

      .model small

      .data

var1 dw 0

      :

      .code

      mov ax,@data

      mov ds,ax

      :

      end

         Здесь регистр  DS загружается таким образом,  что он будет указывать

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

       Так как 64К  - это максимальный объем памяти, к которой можно адре-

соваться с помощью 16-битового смещения, то при работе с большим (более

64К) объемом памяти значение  сегментного регистра и смещение  придется час-

то изменять.

        Сегментные  регистры не могут использоваться  в качестве источников

или приемников в арифметических и логических инструкциях и единственная

операция, которую можно выполнять  с сегментными регистрами, состоит  в ко-

пировании значений между сегментными  регистрами и другими общими реги-

страми или памятью. Например, чтобы  добавить значение 100 к регистру ES,

потребуется следующее:

         :

         mov ax,es

         add ax,100

         mov es,ax

         :

       Из всего этого  можно сделать заключение, что  процессор 8086 лучше

подходит для работы с памятью  в блоках, не превышающих 64К.

       Ещё одна особенность  использования сегментов состоит  в том, что

каждая ячейка памяти адресуется через  многие возможные сочетания "сегмент:

смещение". Например, адрес памяти 100h адресуется с помощью следующих

значений "сегмент: смещение": 0:100h, 1:F0h, 2:E0h и т.д., так как при вычислении всех этих пар "сегмент: смещение" получается значение адреса 100h.

       Аналогично регистрам  общего назначения каждый сегментный  регистр

играет свою, конкретную роль. Регистр CS указывает на код программы, DS

указывает на данные, SS - на стек, сегмент (сегментный регистр) ES - это

"трафаретный" (дополнительный) сегмент, который может использоваться  так,

как это необходимо.

       Регистр CS указывает  на начало блока памяти объемом  64К, или сег-

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

дующая инструкция, которую нужно  выполнить, находится по смещению, оп-

ределяемому в сегменте кода регистром IP, то есть на нее указывает адрес (в

форме "сегмент:смещение") CS: IP. Никакие  другие режимы адресации или

указатели памяти, отличные от IP, не могут  нормально работать относительно

регистра CS.

       Регистр DS указывает  на начало сегмента данных, которые  представ-

ляет собой блок памяти объемом 64К, в котором находится большинство  раз-

мещенных в памяти операндов. Обычно для ссылки на адреса памяти исполь-

зуются смещения, предполагающие использование  регистров BX, SI или DI.

       Регистр ES указывает  на начало блока памяти объемом  64К, который

называется дополнительным сегментом. Как и подразумевает его название,

дополнительный сегмент не служит для какой-то конкретной цели, но досту-

пен тогда, когда в нем возникает  необходимость. Иногда дополнительный сег-

мент используется для выделения  дополнительного блока памяти объемом

64К для данных. Однако доступ к памяти в дополнительном сегменте менее

эффективен, чем доступ к памяти в сегменте данных. Особенно полезен  до-

полнительный сегмент, когда используются строковые инструкции. Все стро-

ковые инструкции, которые выполняют  запись в память, используют в качестве

адреса памяти, в которую нужно  выполнить запись, пару регистров ES:DI.

Это означает, что регистр ES особенно полезен при использовании его  в каче-

стве целевого сегмента при копировании  блоков, сравнении строк, просмотре

памяти и очистке блоков памяти.

       Регистр SS указывает  на начало сегмента стека, которые  представля-

ет собой блок памяти объемом 64К, в котором находится стек. Все  инструк-

ции, которые неявно используют регистр SP (включая занесение в стек, извле-

чение из стека, вызовы и возвраты управления), работают с сегментом стека,

так как только регистр SP может  использоваться для адресации памяти в сег-

менте стека. Как мы обсуждали ранее, регистр BP также работает относи-

тельно сегмента стека. Это позволяет  использовать регистр BP для доступа к

параметрам и переменным, которые  хранятся в стеке.

 

1.3 Содержание отчета

 

       1.3.1 Название лабораторной  работы.

       1.3.2 Цель работы.

       1.3.3 Рисунки с  лекции.

       1.3.4 Фрагменты  программ с комментариями  к лабораторной работе.

       1.4.5 Листинг программы  к лабораторной работе.

 

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

 

        1.4.1 В чём  отличие понятий структуры и  архитектуры системы (вычис-

лительной, управляющей, микропроцессорной  и т.п.)?

        1.4.2 Какие основные компоненты входят в состав микропроцессорной

системы?

        1.4.3 Какие элементы  микропроцессора являются определяющими  при

функционировании процессора?

        1.4.4 Какая система  счисления является машинным  языком? В какой

системе счисления обычно записывают команды на машинном языке? Почему?

        1.4.5 под архитектурой МП понимают совокуп-

ность следующих компонентов и  характеристик:

       - разрядность  адресов и данных;

       - состав, имена  и назначение программно-доступных  регистров;

       - форматы системы команд;

       - режимы адресации  памяти;

       - способы машинного  представления данных разного  типа;

       - способ адресации  внешних устройств и средства  выполнения опера-

ций ввода-вывода;

       - особенности  инициирования и обработки прерываний.Какие архитектурные характеристики микропроцессора представ-

ляют наибольший интерес при  его программировании?

        1.4.6 Является  ли модель МП Intel 8086 моделью фон  Неймана и поче-

му? Модель МП Intel 8086 является  моделью фон Неймана

        1.4.7 К какой  разновидности архитектур относится  архитектура 8086:

RISC, CISC, SIMD, SISD, MIMD?

        1.4.8 Перечислите основные группы регистров, входящих в состав МП

8086.                                                                           

        1.4.9 При работе  РС в реальном режиме используется  сегментный спо-

соб адресации памяти. В чём суть? Поясните на примере с 16-битной шиной

адреса.

       1.4.10 Для чего предназначена программа-отладчик?

        1.4.11 Что такое  стек и где он используется? Приведите пример исполь-

зования стека.

        1.4.12 Назовите  основные признаки отличия RISC - архитектуры МП от

CISC. Что такое конвейерная обработка  данных и какой из архитектур  МП она

наиболее приемлема: RISC или CISC? Почему?

        1.4.13 Какая информация включается в состав слова состояния процессора?

Регистры или наборы регистров, известных под названием "слово состояния программы" (program status word — PSW), включают информацию о состоянии и кодах условий.

        1.4.14 Как организуется в микро-ЭВМ сегментно-страничный способ

Информация о работе Изучение архитектуры микропроцессоров