Микропроцессоры 80286 и 80386 серии iX86 фирмы Intel

Скачать доклад: Микропроцессоры 80286 и 80386 серии iX86 фирмы Intel

ПРОЦЕССОР 80286

Процессор 80286 был первым процессором серии iAPx86, который позволил устранить ограничение памяти в 1 мегабайт и который поддерживал также защиту памяти и виртуальную память. Процессор 80286 поддерживает все инструкции процессора 80186 и кроме того позволяет использовать дополнительные инструкции, обеспечивающие управление памятью с развитой архитектурой.

Процессор 80286 имеет два режима операций: реальный режим и защищенный режим. Работа процессора 80286 в реальном режиме практически аналогична работе процессора 80286 (он обеспечивает тот же набор инструкций, что и процессор 80186).

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

Для работы в защищенном режиме в процессоре 80286 используются следующие инструкции:

        CLTS    LIDT    LMSW
LGDT LLDT LTR

Эти инструкции процессора 80286 предназначены только для использования операционной системой. В прикладных программах нет необходимости (и возможности) использовать инструкции защищенного режима.

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

В Турбо Ассемблере разрешить ассемблирование с использованием инструкций процессора 80286 (незащищенный режим) можно с помощью директивы .286. Поддержка инструкций защищенного режима процессора 80286 разрешается по директиве .286Р.

ПРОЦЕССОР 80386

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

Как и процессор 80286, процессор 80386 имеет два типа инструкций - привилегированные и непривилегированные. Непривилегированные инструкции может выполнять любая программа. Однако привилегированные инструкции может выполнять только программа, выполняющаяся на текущем уровне привилегий 0 (наиболее привилегированный уровень). Привилегированные инструкции процессора 80386 представляют собой расширение множества привилегированных инструкций процессора 80286 (инструкции защищенного режима) и также предназначены только для использования операционной системой.

Поддержка непривилегированных инструкций процессора 80386 разрешается по директиве .386. Директива .386Р разрешает поддержку привилегированных инструкций процессора 80386.

Новые типы сегментов

Возможность процессора 80386 поддерживать сегменты размером 64К (как в процессоре 80286) или линейные сегменты до 4 гигабайт потребовала двух новых типов сегментов - USE16 и USE32.

При ссылке на сегмент размером 64К 16-разрядное смещение может храниться либо в базовом или индексном регистре (BX, SI, DI или BP), либо использоваться в качестве непосредственного смещения. В этом режиме работает процессор 80286 (и 8086). В процессоре 80386 сегментам, имеющим максимальный размер 64К, дается тип использования USE16.

Для ссылки на любую ячейку в 4 гигабайтовом сегменте нужно использовать 32-разрядное смещение записанное в любом из 32-разрядных регистров или указываемое непосредственно. Сегментам процессора 80386, которые имеют максимальную длину 4 гигабайта, дается тип USE32. Процессор 80386 позволяет использовать в качестве базового регистра или в индексного регистра все восемь 32-разрядных общих регистров (EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP).

Новые регистры

В процессоре 80386 общие регистры, регистр флагов и указатель инструкций процессора 8086 увеличены по размеру до 32 бит, кроме того добавлены два новых сегментных регистра.

          31                16 15                 0
          --------------------T---------T---------¬-¬
          ¦                   ¦   AH    ¦   AL    ¦ ¦
  EAX     ¦###################+---------+---------+ ¦
          ¦                   ¦        AX         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T---------T---------¬ ¦
          ¦                   ¦   BH    ¦   BL    ¦ ¦
  EBX     ¦###################+---------+---------+ ¦
          ¦                   ¦        BX         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T---------T---------¬ ¦
          ¦                   ¦   CH    ¦   CL    ¦ ¦
  ECX     ¦###################+---------+---------+ ¦
          ¦                   ¦        CX         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T---------T---------¬ ¦
          ¦                   ¦   DH    ¦   DL    ¦ ¦
  EDX     ¦###################+---------+---------+ ¦  Общие
          ¦                   ¦        DX         ¦ ¦ регистры
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  ESI     ¦###################¦        SI         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  EDI     ¦###################¦        DI         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  EBP     ¦###################¦        BP         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  ESP     ¦###################¦        SP         ¦ ¦
          L-------------------+----------------------

          --------------------T-------------------¬ Указатель
  EIP     ¦###################¦        IP         ¦ инструкций
          L-------------------+--------------------

          --------------------T-------------------¬ Регистр
  EFLAGS  ¦###################¦     FLAGS         ¦ флагов
          L-------------------+--------------------
                              15                  0
                              --------------------¬-¬
                       CS     ¦                   ¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       DS     ¦                   ¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       DS     ¦                   ¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦ Cегментные
                       ES     ¦                   ¦ ¦ регистры
                              L-------------------- ¦
                              --------------------¬ ¦
                       FS     ¦###################¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       GS     ¦###################¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       SS     ¦                   ¦ ¦
                              L----------------------
                              15                  0

32-разрядные общие регистры

32-разрядные регистры общего назначения называются EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP. Младшие 16 битов этих регистров образуют множество 16-разрядных регистров процессора 8086, которые нам уже хорошо знакомы. Например, младшие 16 битов регистра EAX представляют собой регистр AX. Аналогично, младшие 8 битов регистра EAX представляют собой регистр AL. В результате к различным частям регистра EAX можно теперь обращаться с помощью четырех различных имен: 32-битового регистра EAX, 16-битового регистра AX и 8-битовых регистров AH и AL. Тоже самое относится к регистрам EBX, ECX и EDX.

При обращении к 32-разрядным регистрам есть имеется только один небольшой недостаток: невозможно непосредственно использовать старшие 16 битов 32-разрядного регистра, как 16-разрядный регистр. Если вы хотите использовать старшие 8 битов регистра AX, то можно просто сослаться на регистр AH, а если вы хотите использовать младшие 16 битов регистра ESI, как регистр, то можно просто ссылаться на SI. Однако нет эквивалентного способа ссылаться, скажем, на старшие 16 битов, например, регистра EAX.

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

32-разрядный регистр флагов

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

32-разрядный указатель инструкций

Указатель инструкций процессора 80386 имеет размер 32 бита, что отличается от 16-битового указателя инструкций процессора 8086. Этот расширенный указатель инструкций поддерживает сегменты кода размером до 4 гигабайт.

Новые сегментные регистры

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

Регистры FS и GS используются также, как в несторовых инструкциях используется регистр ES: с помощью префикса переопределения сегмента.

Новые режимы адресации

Процессор 80386 поддерживает все режимы адресации процессоров 8086, 80186 и 80286 и позволяет также использовать новые режимы адресации. В качестве базового регистра можно использовать любой из восьми 32-разрядных общих регистров, а в качестве индексного регистра - любой из 8 32-разрядных общих регистров, кроме регистра SP.

При вычислении адреса памяти индексный регистр можно умножать на 2, 4 или 8. Для этого после индексного регистра просто помещается *2, *4 или *8 (это средство называется индексным масштабированием). Например:

	 mov	 ebx,8
mov eax,[DwordTable+ebx*4]

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

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

Вопрос о том, какой из регистров является базовым, важен, так как по умолчанию базовый регистр управляет сегментом, на который делается ссылка при данном обращении к памяти. Доступ к памяти, осуществляемый с помощью использования регистров EBP и ESP в качестве базовых, приводит к ссылке на сегмент, на который указывает регистр SS, а доступ к памяти, при котором в качестве базовых используются регистры EAX, EBX, ECX, EDX, ESI или EDI приводит к ссылке на сегмент, на который указывает регистр DS.

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