Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
арх_лекция_03.doc
Скачиваний:
3
Добавлен:
17.04.2019
Размер:
189.44 Кб
Скачать

Регистры индекса, указателя и базы.

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

Действия со стеком осуществляются с помощью селектора сегмента стека (SS) и пары регистров указателя стека [(E)SP] и указателя базы [(Е)ВР]. Смещения в сегментах данных (DS) и (ES) берутся из регистра базы [(Е)ВХ]. Более сложные действия над данными могут быть достигнуты при использовании пары регистров индекса источника [(E)SI] и индекса приемника [(E)DI] вместе с активным в дан­ный момент сегментом данных.

Флаги

Микропроцессор 80386 содержит регистр EFLAGS с 13 полями флагов. Шесть флагов называются флагами состояния, они изменяются и дают необходимую ин­формацию для управления арифметическими и логическими операциями. Флагами состояния являются: CF (флаг переноса), PF (флаг па­ритета), AF (вспомогательный флаг переноса), ZF (флаг нуля), SF (флаг знака), OF (флаг переполнения):

• флаг переноса (CF) устанавливается в единицу, когда при арифметической операции над 8- или 16-разрядным операндом происходит перенос или заем. В противном случае флаг сбрасывается в 0. Этот флаг используется также

. Регистры EFLAGS и EIP

при командах сдвига и циклического сдвига для значений разряда, "выходя­щего" из регистра;

• флаг паритета (PF) используется в основном при передаче данных. Он уста­навливается в единицу для нечетного паритета или сбрасывается в 0 для чет­ного;

• вспомогательный флаг переноса (AF) используется для двоично-десятич^ой арифметики. Он показывает, был ли перенос или заем в четырех младших цифрах двоично-десятичного числа; » флаг нуля (ZF) равен 1, когда арифметический результат равен нулю;

• флаг знака (SF) устанавливается в 1 при отрицательном арифметическом ре­зультате и сбрасывается в 0 при положительном результате;

• флаг переполнения (OF) показывает, был ли перенос старшего разряда ре­зультата без вырабатывания признака переноса соответствующего разряда.

Четыре из тринадцати флагов, называемые TF, IF, DF и VM, предназначены для прямых действий процессора. Например, установка флага ловушки (TF) пере­водит микропроцессор в одношаговый режим для отладки программ. Флаг разре­шения прерывания (IF), будучи установлен в 1, разрешает внешние прерывания и при сбросе в 0 запрещает их. Направление цепочки операций контролируется фла­гом направления (DF). Когда DF сброшен в 0, значение регистра [(E)SI] или [(E)DI] автоматически увеличивается, если же DF установлен в 1, то [(E)SI] и [(E)DI] автоматически уменьшаются. Когда установлен флаг виртуального режима (VM), микропроцессор 80386 переходит из защищенного режима в виртуальный режим микропроцессора 8086. Флаг VM может быть установлен командой IRET или переключениями задач во время работы в защищенном режиме.

Специальные поля

Новые флаги IOPL, NT и RF используются микропроцессором только в защи­щенном режиме. Двухразрядный флаг уровня привилегии ввода-вывода (IOPL) служит для гарантии, что команда произведет только разрешенную операцию. Ко­манды POPF и IRET выполняются на нулевом уровне привилегии, и переключения задач изменяют установку флага IOPL.

Флаг вложенной задачи (NT) показывает, является ли выполнение текущей за­дачи вложенным в выполнение другой задачи. Если NT установлен в 1,, это пока­зывает, что текущая вложенная задача связана с предыдущей. Значение флага NT определяется управляющими передачами между точками задачи, прерываниями и ловушками. Флаг рестарта (RF) используется после ошибки при отладке, привед­шей к прекращению работы программы. Флаг RF очищается, когда ошибочная ко­манда "успешно" выполнена.

Указатель команды

Регистр указателя команды [(Е)1Р] содержит смещение, необходимое для ад­реса следующей команды внутри активного в данный момент сегмента кода. Это вырабатывает полный 32-разрядный указатель для следующей последовательной команды программы. Микропроцессор 80286 использует младшие 16 разрядов ре­гистра EIP, называемые IP, в качестве указателя команды