Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Префикс разрядности адреса 
:(
    Опции темы
ZIFIR
Дата 13.10.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Изучаю асм по книге Юрова.У него написано:
1. Данный префикс уточняет разрядность адреса (какого?).
2. Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда (это как?).
3. Если разрядность адреса  для данной команды составляет 16 битов, это означает, что команда содержит 16-разрядное смещение и оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента (тоже не очень понятно).
PM MAIL   Вверх
586
Дата 14.10.2009, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата(http://www.citforum.ru/book/cook/intel.shtml)
Префикс переопределения размеров адреса

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

всю статью не стал копировать - дочитай по ссылке.

а вот пример:
код в 16 битном режиме:
Цитата
a30000          mov     word ptr ds:[0000h],ax
67a300000000    mov     word ptr ds:[00000000h],ax

код в 32 битном режиме:
Цитата
a300000000      mov     dword ptr ds:[00000000h],eax
67a30000        mov     dword ptr ds:[0000h],eax

67 - это префикс разрядности адреса.

Это сообщение отредактировал(а) 586 - 14.10.2009, 08:11
PM   Вверх
ZIFIR
Дата 15.10.2009, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Если я правильно понял, то при применении префикса разрядности операнда, изменяется разрядность адресного операнда,
а при применении префикса разрядности адрес - изменяется разрядность адреса адресного операнда. Или не так?

Как тогда использовать данные префиксы в программе? Перед командой указывается 66h или 67h??
PM MAIL   Вверх
586
Дата 16.10.2009, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата(ZIFIR @  15.10.2009,  22:47 Найти цитируемый пост)
Если я правильно понял, то при применении префикса разрядности операнда, изменяется разрядность адресного операнда

Поменяется вообще разрядность операнда. Например, вместо mov ax, ax будет mov eax, eax. Или, вместо mov word ptr [0000], ax, будет mov dword ptr [0000], eax
Цитата(ZIFIR @  15.10.2009,  22:47 Найти цитируемый пост)
а при применении префикса разрядности адрес - изменяется разрядность адреса адресного операнда.

переключится тип адресации. Либо на 32-разрядную, либо на 16-разрядную.
В 32-битной адресации, например,  можно делать адресацию по любому регистру:
mov dword ptr [eax], 0
А в 16-битной адресации по базовому регистру (bx), индексному регистру (si, di), и по регистру bp.


Цитата(ZIFIR @  15.10.2009,  22:47 Найти цитируемый пост)
Как тогда использовать данные префиксы в программе?

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

Вот, если ты напишешь в 32-битной программе:
Код
mov ax, ax

то ассемблер добавит 66-й префикс, и эта запись будет эквивалентна этой:
Код
db 66h
mov eax, eax

PM   Вверх
Korod
Дата 24.10.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2011

Репутация: нет
Всего: нет



Посмотрел

Это сообщение отредактировал(а) Korod - 26.10.2011, 10:20
PM MAIL   Вверх
500mhz
Дата 24.10.2011, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Korod
на дату иногда смотрите )


--------------------

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1055 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.