![]() |
|
![]() ![]() ![]() |
|
Coder |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: нет Всего: 11 |
почему компилятор Fasm выдает ошибку на такой строке:
как реализовать косвенную адресацию в FASM`e? |
|||
|
||||
Exekutor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 1.11.2005 Где: Казахстан. Костан ай Репутация: нет Всего: 4 |
Не только фасм, и тасм тоже. AX - это же регистр общего назначения. Воспользуйся регистрами SI или DI.
-------------------- [color=blue][size=2]En taro addun, ma sol larinas[/size][/color] |
|||
|
||||
sgi1981 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 7 Всего: 10 |
Потому что, при использовании 16-ти разрядного регистра ax вы пытаетесь использовать в режиме 16-разрядной адресации адресный регистр ax для задания составляющей адреса, а 16-разрядный регистр ax не может быть использован в качестве адресного для задания составляющей адреса. Для справки 1) В режиме 16-разрядной адресации для задания составляющих адреса могут быть использованы следующие комбинации регистров и непосредственных смещений [bx+si] [bx+di] [bp+si] [bp+di] [si] [di] смещение_16 [bx] [bx+si]+смещение_8 [bx+di]+смещение_8 [bp+si]+смещение_8 [bp+di]+смещение_8 [si]+смещение_8 [di]+смещение_8 [bp]+смещение_8 [bx]+смещение_8 [bx+si]+смещение_16 [bx+di]+смещение_16 [bp+si]+смещение_16 [bp+di]+смещение_16 [si]+смещение_16 [di]+смещение_16 [bp]+смещение_16 [bx]+смещение_16 2) В режиме 32-разрядной адресации для задания составляющих адреса могут быть использованы следующие комбинации регистров и непосредственных смещений [eax] [ecx] [edx] [ebx] [sib] смещение_32 [esi] [edi] [eax]+смещение_8 [ecx]+смещение_8 [edx]+смещение_8 [ebx]+смещение_8 [sib]+смещение_8 [ebp]+смещение_8 [esi]+смещение_8 [edi]+смещение_8 [eax]+смещение_32 [ecx]+смещение_32 [edx]+смещение_32 [ebx]+смещение_32 [sib]+смещение_32 [ebp]+смещение_32 [esi]+смещение_32 [edi]+смещение_32 3) Важно учесть возможность адресации с помощью байта SIB (масштаб-индекс-база) Например, в 32-разрядном режиме адресации возможна такая команда mov ecx, [edx*8+ebx+45] За дополнительной информацией - к справочнику. И М Х О. Используйте вместо регистра ax регистр eax. Переходите на программирование в 32-разрядном режиме. Оно намного лучше. Это сообщение отредактировал(а) sgi1981 - 29.7.2006, 18:50 -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |