logo

Воскресенье 11 Декабрь 2016 (GMT+0300)

Главная Форматы команд Атрибуты и префиксы

Форматы команд: Атрибуты (признаки) размера операнда и размера адреса

Печать
Программирование - Архитектура и система команд микропроцессоров x86

 

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

Подобным образом, команда, которая обращается к словам (16 бит) или двойным словам (32 бита), имеет атрибут, соответственно, 16 или 32-битного размера операнда.

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

Атрибуты размера операнда и размера адреса по умолчанию

Для программ, работающих в защищенном режиме, бит D в дескрипторах исполняемых кодовых сегментов определяет значение атрибута размера операнда и размерa адреса по умолчанию. Это значение атрибута применяется ко всем командам, выполняемым в сегменте. Если бит D сброшен, то значения размера операнда и размерa адреса по умолчанию устанавливаются равными 16 бит, а если бит D установлен — 32 бита.

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

Префиксы размера операнда и размера адреса

Внутренняя кодировка команды может включать в себя два однобайтных префикса: префикс размера операнда (67h), префикс размера адреса (66h). (Положение префиксов при кодировке команды описано в подразделе "Базовый формат команды".) Эти префиксы замещают значения атрибутов размера операнда и размера адреса, принятые по умолчанию для команды следующей за префиксом. В таблице 5.1. показаны все возможные комбинации значений атрибутов по умолчанию и их замещения префиксами.

 

Таблица 5.1. Эффект от применения префиксов размера операнда и размера адреса



Сегмент по умолчанию (D = )

0

0

0

0

1

1

1

1

Префикс размера операнда 66h

-

-

+

+

-

-

+

+

Префикс размера адреса 67h

-

+

-

+

-

+

-

+

Эффективный размер операнда

16

16

32

32

32

32

16

16

Эффективный размер адреса

16

32

16

32

32

16

32

16

Атрибут размера адреса для стека

Команды, которые используют стек неявно (например: pop eax), также имеют атрибут размера адреса стека 16 или 32 бит. Команды с атрибутом 16-битного размера адреса стека используют 16-битный регистр указателя стека SP; команды с атрибутом 32-битного размера адреса стека используют 32-битный регистр указателя стека ESP.

Атрибут размера адреса стека управляется битом B дескриптора сегмента данных регистра SS. Нулевое значение бита B, устанавливает атрибут 16-битного размера адреса стека, единичное значение устанавливает атрибут 32-битного размера адреса стека.

 

 

 



Все права защищены © 1997-2011 Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Яндекс.Метрика               Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники