» Главная
eXcode.ru » Статьи » Assembler
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 15





Дополнительные режимы адресации




Режимы адресации 32-разрядных процессоров разработаны, исходя из требований образования 32-битового смещения. Другими словами, они предназначены для 32-разрядных приложений, в которых сегменты данных или стека (как, впрочем, и сегменты команд) могут иметь размеры до 232 = 4 Гбайт. Однако в реальном режиме размер любого сегмента ограничивается величиной 216 = 64 Кбайт, и 32-битовые смещения не имеют смысла. С другой стороны, ничто не мешает нам использовать для образования 16-битового смещения 32-разрядные регистры (ЕВХ, ESI и проч.), если, конечно, их реальное содержимое не будет превышать величины FFFFh. Указание в качестве операндов команд 32-разрядных регистров позволяет использовать дополнительные возможности 32-разрядных процессоров по части адресации памяти, что в некоторых случаях может оказаться полезным. Следует подчеркнуть, что речь идет здесь только о тех операндах, или, правильнее сказать, аргументах команды, которые описывают косвенную (через регистры) адресацию памяти.
В отличие от МП 86, где базовыми регистрами могут быть только ВХ и ВР, а индексными только SI и DI, 32-разрядные процессоры допускают использование в качестве и базовых, и индексных практически всех регистров общего назначения. Таким образом, вполне законна команда вида

mov ЕАХ,[ЕСХ][EDX]

Второе отличие заключается в возможности масштабирования содержимого индексного регистра, т.е. умножения его на заданный в команде коэффициент, который может принимать значения 1, 2, 4 или 8. Пример такой адресации:

inc word ptr [ЕАХ] [ЕСХ*2]

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

inc word ptr [AX] [ECX*2]

или

inc word ptr [ЕАХ] [СХ*2]

рассматриваются ассемблером, как неправильные.
Режимы косвенной адресации памяти, предоставляемые 32-разрядными процессорами при использовании 32-разрядных регистров, изображены на рис. 4.2.
Из рисунка видно, что в качестве базового можно использовать все регистры общего назначения, включая даже указатель стека ESP. При этом, если в качестве базового выступает один из регистров ESP или ЕВР, то по умолчанию адресация осуществляется через сегментный регистр SS, хотя возможна замена сегмента. Во всех остальных случаях адресация по умолчанию осуществляется через сегментный регистр DS. Использование регистра ЕВР в качестве индексного не адресует нас к стеку: адресация попрежнему осуществляется с помощью регистра DS.

Прочерк во второй колонке подчеркивает, что регистр ESP нельзя использовать в качестве индексного. Это не означает, что ESP нельзя указывать в качестве второго операнда:

mov ЕАХ,[ЕСХ][ESP]

Недопустима только конструкция, в которой содержимое ESP умножается на масштабирующий множитель:

mov ЕАХ,[ЕСХ][ESP*8]

Полезно также отметить, что смещение в команде вида

mov ЕАХ,[ЕВХ][ЕСХ]+20

может быть только или 8-битовым, или 32-битовым. 16-битовые смещения не образуются. Если указанная в команде величина смещения помещается в байт, как это имеет место в приведенном выше примере команды, то смещение в коде команды занимает 1 байт. Если же величина смещения больше 255, то под него в коде команды отводится сразу 32 бит.
Таким образом, понятия базовой и индексной адресации в 32-разрядных процессорах несколько размываются. Если регистр указывается с масштабирующим множителем, то это, конечно, индексная адресация. Если же множитель отсутствует, то адресацию и через ЕВХ, и через ESI с равным успехом можно отнести как к базовой, так и к индексной.
Использование для адресации памяти 16-разрядных регистров резко сужает возможности адресации 32-разрядных процессоров (рис. 4.3). В этом случае мы фактически имеем дело с МП 86.

Напомним, что в 16-разрядном режиме допустимы не все сочетания базовых и индексных регистров. В качестве базового регистра можно использовать только ВХ или ВР, а в качестве индексного только SI или DI.

источник: www.help.jino-net.ru
К началу статьи





Добавил: MadvEXДата публикации: 2007-04-13 17:57:02
Рейтинг статьи:3.33 [Голосов 6]Кол-во просмотров: 14950

Комментарии читателей

Всего комментариев: 1

2015-12-31 15:15:23
ibabavorn
Балашиха — самый огромный город Московской области, население коего будет примерно трехсот тысяч человек(без учета жителей Железнодорожного). Рано или поздно местным жителям и гостям города будет нужно снять квартиру в Балашихе на сутки недорого позвонив: 8 903 572 1011.

Где это возможно сделать?
Естественно у нас. В нашем фонде существует пять однокомнатных квартир на различный вкус и кошелек.

<a href=http://ibaba.ru>Читать дальше</a> - Снять квартиру в Балашихе


Стоимость квартиры посуточно в Балашихе

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

Оборудованная квартира на день в Балашихе для возвышенных встреч или просто для комфортного проживания несомненно поможет сэкономить на гостинице и сохранить конфиденциальность. Для нас важно чтобы клиент был доволен.
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Какой марки ваш мобильник?
Nokia
40% (146)
Samsung
8% (29)
Siemens
16% (59)
Motorola
13% (49)
Sony Ericsson
13% (49)
LG
1% (4)
Pantech
0% (0)
Alcatel
2% (6)
Другой
3% (10)
Нет у меня мобилы
4% (15)

Проголосовало: 367
Hardware это та часть компьютора, которую можно пнуть, если Shareware отказывается работать.
Рейтинг: 3/10 (1)
Посмотреть все анекдоты