Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
64
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать

Отклонение

Отклонение является 8- или 16-разрядной величиной, используемой при вычислении эффективного адреса операнда. Один или два байта отклонения располагаются в коде команды сразу за байтом ModRegR/M; для 16-разрядного отклонения сначала идёт младший байт, а затем – старший. Наличие отклонения определяется содержимым байтаModRegR/M.

16-разрядное отклонение присутствует в двух случаях: когда поле ModбайтаModRegR/Mсодержит значение 10 либо когда полеModсодержит значение 00, а полеR/M– значение 110.

8-разрядное отклонение присутствует, когда поле Modсодержит значение 01.

Непосредственный операнд

8- или 16-разрядный непосредственный операнд присутствует только в командах вида “регистр–непосредственный операнд” и “память–непосредственный операнд”. Его наличие определяется кодом операции, который состоит из байта кода операции и поля RegбайтаModRegR/M. ПоляModиR/Mэтого байта определяют местоположение второго операнда инструкции – в регистре общего назначения или в памяти.

Непосредственный операнд располагается в коде команды непосредственно за отклонением, а если последнее отсутствует – за байтом ModRegR/M. Байты 16-разрядного непосредственного операнда хранятся в порядке “младший–старший”.

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

    1. Инициализация процессора

Инициализация микропроцессора 8086 выполняется при поступлении аппаратного сигнала сброса. В результате выполнения внутренней микропрограммы сброса в регистрах устанавливаются следующие начальные значения (в шестнадцатеричном виде):

– регистр флагов Flags–F002;

– регистр указателя инструкции IP– 0000;

– регистр селектора сегмента кода CS–FFFF;

– регистр селектора сегмента данных DS– 0000;

– регистр селектора сегмента стека SS– 0000;

– регистр селектора сегмента дополнительных данных ES– 0000.

Содержимое других регистров микропроцессора непредсказуемо.

После установки начального содержимого перечисленных выше регистров микропроцессор производит выборку и выполнение первой инструкции. Её физический адрес равен FFFF0. ВIBM-совместимых вычислительных машинах по этому адресу располагается ПЗУBIOS, а первой выполняемой инструкцией является команда дальнего (межсегментного) безусловного перехода на программу самотестирования, являющуюся частьюBIOS.

  1. Прерывания

    1. Источники и причины прерываний

Прерывания в микропроцессоре 8086 могут возникать либо вследствие каких-либо внешний событий (внешние прерывания – externalinterrupts), либо из-за некоторых ошибок, возникающих в процессе выполнения программы (исключения –exceptions), либо генерироваться специальными инструкциями программы (программные прерывания –softwareinterrupts).

Для определения обработчика прерывания, который должен быть выполнен, используется векторная система. Всего в микропроцессоре обеспечивается 256 различных векторов прерываний, из которых векторы 0–31 были зарезервированы фирмой Intelдля “внутренних нужд” (в первых микропроцессорах – 8086 и 8088 – использовались только векторы 0–4; в дальнейшем их число росло). Векторы 32–255 могут свободно использоваться для нужд программного обеспечения, а также назначаться внешним устройствам.