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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



На рис. 2 показаны основные регистры микропроцессора. Ниже приводтся их краткая характеристика.

Регистр AX (EAX) (аккумулятор) – автоматически применяется при операциях умножения, деления и при работе с портами ввода-вывода. Его использование в арифметических, логических и некоторых других операциях позволяет увеличить скорость их выполнения.

Регистр BX (EBX) (регистр базы) – может содержать адреса элементов оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных.

Регистр CX (ECX) (счетчик) – используется в различных операциях повторения, например в циклах, в строковых командах и т. д.

Регистр DX (EDX) (регистр данных) – является единственным элементом, который может хранить адреса портов ввода-вывода в командах типа in (получить из порта) и out (вывести в порт). Без его помощи невозможно обратиться к портам с адресами от 256 до 65535. Этот регистр применяется также в операциях умножения и деления.

Регистры AX, BX, CX, DX позволяют независимо обращаться к их старшей (H) и младшей (L) половине. Соответствующие подрегистры являются 8-разрядными и имеют адреса AH, AL, BH, BL, CH, CL, DH, DL.

Регистр SI (ESI) (регистр индекса источника), как и регистр BX,может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки источника в сегменте данных.

Регистр DI (EDI) (регистр индекса приемника), как и SI,может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки приемника в сегменте данных.

Регистр BP (EBP) (указатель базы) может содержать адреса элементов в оперативной памяти. Эти адреса будут представлять собой смещение в сегменте стека.

Регистр SP (ESP) (указатель стека) используется для записи данных в стек и чтения их из стека. Фактически он содержит смещение в сегменте стека, которое определяет нужное слово памяти. Значения этого регистра автоматически меняются командами для работы со стеком типов push, pop, pushf, popf, call, ret.

Регистр IP (EIP) (указатель команд) всегда содержит смещение в сегменте кода следующей выполняемой команды. Как только некоторая команда начинает выполняться, значение IP увеличивается на ее длину так, что будет адресовать следующую команду. Обычно команды выполняются в той последовательности, в которой они расположены в программе. Нарушают эту последовательность только команды переходов (они начинаются с буквы j: j xx), команды вызова подпрограммы (call), обработчиков прерываний (int) и возврата (ret, iret). Непосредственно содержимое IP нельзя изменить или прочитать. Косвенно загрузить в регистр IP новое значение могут только команды jxx, call, int, ret, iret.

Регистр CS (регистр сегмента кода) определяет стартовый адрес сегмента, в который помещается код выполняемой программы. Это единственный сегментный регистр, который нельзя загрузить непосредственно. Косвенно загрузить в регистр CS новое значение могут команды вида jxx, call, int, ret, iret. Физический адрес команды в памяти выполняемой программы определяет пара регистров CS:IP. Аналогичные формы записи используются для указания физического адреса в других сегментах.

Регистр DS (регистр сегмента данных) определяет стартовый адрес сегмента, в который помещаются данные для программы. По умолчанию смещения в сегменте данных задаются в регистрах BX, SI и DI.

Регистры ES, FS, GS (регистры сегментов дополнительных данных) опредляет стартовый адрес сегмента, в который помещаются дополнительные данные для программы. Например, в случае строковых команд, DS определяет сегмент для строки-источника, а ES – сегмент для строки-приемника. За исключением строковых команд, доступ к данным в сегменте ES обычно менее эффективен, чем в сегменте DS.

Регистр SS (регистр сегмента стека) определяет стартовый адрес сегмента, в который помещается стек для программы. По умолчанию смещения для сегмента стека задаются в регистрах SP и BP.

Сегментные регистры 16-битны.

Регистр признаков FLAGS (EFLAGS) включает биты, каждый из которых устанавливается в единичное или в нулевое состояние при определенных условиях.

CF – бит переноса: устанавливается в 1, когда арифметическая операция генерирует перенос или выход за разрядную сетку результата. сбрасывается в 0 в противном случае. Этот флаг показывает состояние переполнения для беззнаковых целочисленных арифметических действий. Он также используется в арифметических действиях с повышенной точностью. Может быть установлен командой STC или сброшен командой CLC.

PF – бит четности: устанавливается в 1, если результат последней операции имеет четное число единиц.

AF – бит вспомогательного переноса: устанавливается в 1, если арифметическая операция генерирует перенос из младшей тетрады битов (из 3 бита в 4), сбрасывается в 0 в противном случае. Этот флаг используется в двоично-десятичной арифметике.

ZF – бит нулевого значения: устанавливается в 1, если результат нулевой, сбрасывается в 0 в противном случае.

SF – знаковый бит: устанавливается равным старшему биту результата, который определяет знак в знаковых целочисленных операциях (0 – положительное число, 1 – отрицательное число).

OF – бит переполнения: устанавливается в 1, если целочисленный результат выходит за пределы разрядной сетки. Тем самым данный бит указывает на потерю старшего бита результата.

DF – бит направления: управляет строковыми командами (MOVS, CMPS, SCAS, LODS, STOS). Если DF = 1 (команда STD), то содержимое индексных регистров SI, DI увеличивается, если DF = 0 (команда CLD), то содержимое индексных регистров SI, DI уменьшается.

IF – бит прерываний: при значении 1 микропроцессор реагирует на внешние аппаратные прерывания по входу INTR. При значении 0 микропроцессор игнорирует внешние прерывания.

TF – бит пошаговой отладки: устанавливается в 1 для включения режима пошаговой отладки программы, сбрасывается в 0 в противном случае.

IOPL – уровень приоритета ввода-вывода отображает уровень приоритета ввода-вывода для выполняемой в данное время программы или задачи. Действительный приоритет задачи может быть меньше или равен IOPL.

NT – флаг вложенной задачи: управляет последовательностью вызванных и прерванных задач. Установлен в 1, если текущая задача связана с предыдущей, сброшен в 0, если текущая задача не связана с другими задачами.

RF — флаг возобновления: используется при обработке прерываний от регистров отладки.

VM — флаг виртуального 8086: признак работы процессора в режиме виртуального 8086: 1 – процессор работает в режиме виртуального 8086, 0 – процессор работает в реальном или защищенном режиме.

AC — флаг контроля выравнивания: предназначен для разрешения контроля выравнивания при обращениях к памяти. Если требуется контролировать выравнивание данных и команд по адресам, кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут вызывать исключительную ситуацию.

VIF — флаг виртуального прерывания: при определенных условиях (одно из которых – работа микропроцессора в V-режиме) является аналогом флага IF. Флаг VIF используется совместно с флагом VIP.

VIP — флаг отложенного виртуального прерывания: устанавливается в 1 для индикации отложенного прерывания. Используется совместно с VIF в V-режиме.

ID — флаг поддержки идентификации процессора: используется для отображения поддержки микропроцессором инструкции CPUID.

 

Управляющие регистры

Регистр CR0.



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 174; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.186.72 (0.006 с.)