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

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

Описание

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

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

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

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

 

Лабораторная  работа №1.

 

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

 

 

       1.1 Цель работы

 

      Целью работы является исследование  архитектурных характеристик от-

дельных микропроцессоров и приобретение навыков записи программ в мне-

мокодах и машинных кодах.

 

       1.2 Общие положения

 

       1.2.1 Архитектура микропроцессорных  систем

 

      Центром вычислительной системы  является ее процессор. Это  основ-

ное звено, или "мозг" компьютер(см. лекц.).

           Именно процессор обладает способностью  выполнять команды, со-

ставляющие  компьютерную программу. Персональные компьютеры строятся

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

сталле или "чипе".

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

ропроцессорной системы (МПС) на языке ассемблера, микропроцессор (МП)

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

чих регистров  процессора, регистров признаков, стека  и указателя стека, пор-

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

       При программировании МПС наиболее  важное значение имеет знание

архитектуры МП. В общем случае под архитектурой МП понимают совокуп-

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

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

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

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

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

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

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

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

       - особенности инициирования и  обработки прерываний.

       Программы, управляющие функционированием  МПС, могут быть рас-

положены в  различных типах памяти. Наиболее часто используют постоянное

(ПЗУ) и оперативное  (ОЗУ) запоминающие устройства. Из ПЗУ МП может

лишь считывать  команды и данные, но не может  модифицировать его содер-

жимого в  отличие от ОЗУ, для которого возможно как считывание, так и запись

любой информации.

 

     1.2.2 Архитектура микропроцессора

 

       Архитектуру МП Intel 8086 в упрощённом виде, с функциональной точки зрения, можно представить из двух частей: операционное устройство и шинный интерфейс. Все компоненты МП взаимодействуют между собой посредством систем шин: адресных (16 разрядов), данных (8разрядов) и управления. В процессоре 8086 имеется несколько быстрых элементов памяти на интегральных схемах, которые называются регистрами. Каждый из регистров предоставляет определенные возможности, которые другими регистрами или ячейками памяти не поддержи-

ваются.

       Регистры разбиваются на четыре категории:

       - регистр  флагов;

       - регистры  общего назначения AX, BX, CX, DX, BP, SP,DI и  SI;

       - указатель  инструкций IP;

       - сегментные  регистры CS, SS, DS и ES.

                                                                           5

 

 

 

     1.2.3 Регистр флагов

       Регистр флагов - это 16-разрядный  (16-битовый) регистр содержит всю

необходимую информацию о состоянии процессора 8086 и результатах  по-

следних инструкций.

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

зультат, непосредственно  после этой инструкции вам следует  проверить флаг

нуля (бит Z в  регистре флагов). Если он установлен (то есть имеет ненулевое

значение), это  будет говорить о том, что результат  нулевой. Другие флаги, та-

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

результатах арифметических и логических операций.

        Другие флаги управляют режимом  операций процессора 8086. Флаг

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

полняют перемещение, а флаг прерывания управляет тем, будет ли разреше-

но внешним  аппаратным средствам.

 

       Битовые флаги:

         O - флаг переполнения;

         D - флаг направления;

         I - флаг прерывания;

         T - флаг перехвата;

         S - флаг знака;

         Z - флаг нуля;

         A - флаг дополнительного переноса;

         P - флаг четности;

         C - флаг переноса.

 

Так, например, клавиатура или модем, могут временно приостанавливать те-

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

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

служит для  отладки другого программного обеспечения (отладчики).

       Регистр флагов не считывается  и не модифицируется непосредствен-

но. Вместо этого  регистр флагов управляется в  общем случае с помощью спе-

циальных инструкций (таких, как CLD, STI и CMC), а также с  помощью ариф-

метических  и логических инструкций, модифицирующих отдельные флаги. И

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

нение инструкций (например, JZ, RCR и MOVSB). Регистр флагов не исполь-

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

за состоянием и управления процессором 8086.

 

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

       Восемь регистров общего назначения (или общих регистров) процес-

сора 8086 (каждый размером 16 бит) используются в операциях  большинства

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

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

общего назначения может использоваться для хранения 16-битового значения,

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

регистром и  памятью (запись из регистра в память и наоборот). Например, в

данном фрагменте  программы:

         mov ax,5

         mov dx,9

         add ax,dx

          :

 значение 5 загружается  в регистр AX, значение 9 - в DX, и  эти два значения

складываются  вместе.

 

При этом результат  сохраняется в регистре AX. Вместо регистров AX и DX

здесь можно  использовать регистр CX, SI или любой  другой регистр общего

назначения.

        Кроме такого общего свойства  регистров, как использования  их для

хранения значений или в качестве источника и  приемника при работе в инст-

рукциях с данными, каждый регистр общего назначения имеет свою особен-

ность.

        Регистр AX называют также накопителем  (аккумулятором). Этот ре-

гистр всегда используется в операциях умножения или  деления и является

также одним из тех регистров, который можно использовать для наиболее эф-

фективных операций (арифметических, логических или операций перемещения

данных).

        Младшие  8 бит регистра AX называются также  регистром AL, а стар-

шие 8 бит - регистром AH. Это  может оказаться удобным при  работе с данными

размером в байт. Таким  образом, регистр AX можно использовать, как два от-

дельных регистра. В следующем  фрагменте программы регистр AH устанав-

ливается в значение 0, это значение копируется в AL и затем  в регистр AL до-

бавляется 1:

          .

          mov ah,0

          mov al,ah

          inc al

          .

        В  результате в регистре AX будет  записано значение 1. Регистры BX,

CX и DX могут аналогичным  образом использоваться либо  как один 16-

разрядный регистр, либо как два 8-разрядных.

        Регистр BX может использоваться  для ссылки на ячейку памяти (указа-

тель). Если говорить кратко, то 16-битовое значение, записанное в BX, может

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

доступ. Например, следующий код загружает в AL содержимое адреса памяти

9:

          :

          mov ax,0

          mov ds,ax

          mov bx,9

          mov al,[bx]

          :

Как можно заметить, перед  обращением к ячейке памяти, на которую  указывает

BX, мы загрузили в DS значение 0 (через регистр AX). Это результат сегмент-

ной организации памяти процессора 8086. По умолчанию, когда BX использу-

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

сегментного регистра DS. Регистр BX может интерпретироваться, как два вось-

мибитовых (8-разрядных) регистра - BH и BL.

 

        Специализация  регистра CX - использование в качестве  счетчика. Пред-

положим, мы хотим 10 раз повторить  выполнение блока инструкций. Это  мож-

но сделать следующим  образом:

          mov cx,10

Begin:

       <блок инструкций, который нужно  повторить>

          sub cx,1

          jnz Begin

          :

        Инструкции между меткой Begin и  инструкцией JNZ будут повторяться

до тех пор, пока содержимое регистра CX не станет равным 0. Заметим, что

чтобы уменьшить  содержимое CX и перейти на начало цикла Begin, если ре-

гистр CX еще  не равен 0, здесь используются две  инструкции - SUB CX,1 и

JNZ.

        Уменьшение  значения счетчика и цикл - это  часто используемый эле-

мент программы, поэтому  в процессоре 8086 используется специальная инст-

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

ными. Эта инструкция называется LOOP. Инструкция LOOP (инструкция цик-

ла) вычитает 1 из значения регистра CX и выполняет переход, если содержи-

мое регистра CX не равно 0 (все  это в одной инструкции). Для  приведенного

выше примера можно  записать такой эквивалент:

          :

          mov cx,10

Begin:

        <блок  инструкций, который нужно повторить>

          :

          loop Begin

          :

        Регистр CX можно интерпретировать, как два 8-разрядных регистра -

CH и CL.

        Регистр DX - это единственный регистр,  которые может использоваться

в качестве указателя  адреса ввода-вывода в инструкциях IN и OUT. Фактиче-

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

там ввода-вывода с 256 по 65535. Например, в следующем  фрагменте програм-

мы в порт 878h (LPT) записывается значение 62:

          :

          mov al,62

          mov dx,878h

          out dx,al

          :

        Другие  уникальные качества регистра DX относятся к операциям деле-

ния и умножения. Когда  вы делите 32- или 16-битовый делитель, старшие 16

бит делимого должны быть помещены в регистр DX. После выполнения деле-

ния остаток также сохраняется в DX. (Младшие 16 бит делимого должны

быть помещены в AX. Частное  от деления также будет записано в AX.) Ана-

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

бит произведения сохраняются  в DX (младшие 16 бит записываются в  регистр

AX). Регистр DX можно интерпретировать, как два 8-разрядных регистра - DH

и DL.

        Регистр  SI может использоваться, как указатель  на ячейку памяти. На-

пример:

          :

          mov ax,0

          mov ds,ax

          mov si,20

          mov al,[si]

          :

        Здесь  8-битовое значение, содержащееся  по адресу 20, записывается в

регистр AL. Особенно полезно  использовать регистр SI для ссылки на память в

строковых инструкциях процессора 8086. Например:

          :

          mov ax,0

          mov ds,ax

          mov si,20

          mov al,[si]

          lodsb

          :

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

сохраняется в регистре AX, но к SI также добавляется 1. Это может  оказаться

очень эффективным при  организации доступа к последовательным ячейкам

памяти (например, к строке текста). Кроме того, можно сделать  так, что стро-

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

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

и тысячи действий.

        Регистр  DI очень похож на регистр SI в том плане, что его можно  ис-

пользовать в качестве указателя ячейки памяти. При использовании  его в

строковых инструкциях он имеет также особые свойства. Например:

          :

          mov ax,0

          mov ds,ax

          mov di,1024

          add bl,[di]

          lodsb

          :

        Здесь 8-битовое значение, расположенное  по адресу 1024, записывается

в регистр BL. При  использовании его в строковых  инструкциях регистр DI не-

сколько отличается от регистра SI. В то время как SI всегда используется в

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

DI всегда служит  указателем на целевую ячейку  памяти (приемник). Кроме то-

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

тельно сегментного регистра DS, тогда как DI всегда адресуется к  памяти от-

носительно сегментного регистра ES. Когда регистры SI и DI используются в

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

они всегда адресуются к памяти относительно регистра DS. Например:

         :

         cld

         mov dx,0

         mov es,dx

         mov di,2048

         stosb

         :

       Строковая инструкция STOSB используется здесь и для  сохранения

значения в регистре AL (по адресу памяти, на который указывает регистр DI),

и для добавления к содержимому  регистра DI 1.

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

памяти, но здесь есть некоторые  отличия. Регистры BX, SI и DI обычно ссы-

лаются на память относительно сегментного  регистра DS (или, в случае ис-

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

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