![]() |
|
![]() ![]() ![]() |
|
ZIFIR |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Изучаю асм по книге Юрова.У него написано:
1. Данный префикс уточняет разрядность адреса (какого?). 2. Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда (это как?). 3. Если разрядность адреса для данной команды составляет 16 битов, это означает, что команда содержит 16-разрядное смещение и оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента (тоже не очень понятно). |
|||
|
||||
586 |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
всю статью не стал копировать - дочитай по ссылке. а вот пример: код в 16 битном режиме:
код в 32 битном режиме:
67 - это префикс разрядности адреса. Это сообщение отредактировал(а) 586 - 14.10.2009, 08:11 |
||||||
|
|||||||
ZIFIR |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Если я правильно понял, то при применении префикса разрядности операнда, изменяется разрядность адресного операнда,
а при применении префикса разрядности адрес - изменяется разрядность адреса адресного операнда. Или не так? Как тогда использовать данные префиксы в программе? Перед командой указывается 66h или 67h?? |
|||
|
||||
586 |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Поменяется вообще разрядность операнда. Например, вместо mov ax, ax будет mov eax, eax. Или, вместо mov word ptr [0000], ax, будет mov dword ptr [0000], eax
переключится тип адресации. Либо на 32-разрядную, либо на 16-разрядную. В 32-битной адресации, например, можно делать адресацию по любому регистру: mov dword ptr [eax], 0 А в 16-битной адресации по базовому регистру (bx), индексному регистру (si, di), и по регистру bp. 67-й префикс (тот, что изменяет разрядность адреса) в обычных программах не используется. 66-й префикс делает в 16-битном режиме процессора команду 32-битной и наоборот. Вот, если ты напишешь в 32-битной программе:
то ассемблер добавит 66-й префикс, и эта запись будет эквивалентна этой:
|
||||||||
|
|||||||||
Korod |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.10.2011 Репутация: нет Всего: нет |
Посмотрел
Это сообщение отредактировал(а) Korod - 26.10.2011, 10:20 |
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
Korod
на дату иногда смотрите ) -------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |