Описание процессора i8086 для программиста


Байт ModRegR/M - часть 2


/p>

Если поле Mod содержит значение 11, поле R/M определяет регистр общего назначения, являющийся операндом инструкции. Разрядность регистра зависит от разрядности выполняемой инструкции и определяется кодом операции.

Значения поля Mod, равные 00, 01 и 10, определяют операнд в памяти. Значение 00 указывает, что при вычислении эффективного адреса операнда отклонение не используется; значение 01 указывает, что используется 8-разрядное отклонение, находящееся в байте, следующем за байтом ModRegR/M; значение 10 указывает, что используется 16-разрядное отклонение, записанное в двух байтах, следующих за байтом ModRegR/M, в обычном порядке (“младший–старший”).

Поле R/M для случая операнда в памяти определяет, содержимое каких регистров общего назначения будет использоваться при вычислении эффективного адреса операнда.

Комбинация Mod=00 и R/M=110 является исключением из общего правила: эффективный адрес операнда равен 16-разрядному отклонению, следующему в коде команды непосредственно за байтом ModRegR/M; содержимое регистров общего назначения в формировании эффективного адреса для этого случая не используется.

Когда в состав эффективного адреса входит содержимое регистра BP, для формирования физического адреса операнда используется селектор сегмента стека, находящийся в регистре SS. Если же при вычислении эффективного адреса регистр BP не используется, физический адрес формируется с помощью селектора сегмента данных их регистра DS. И в том, и в другом случае используемый по умолчанию сегментный регистр может быть изменён с помощью префикса замены сегмента, входящего в состав кода команды.




- Начало -  - Назад -  - Вперед -