Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm: Общие вопросы > Косвенная адресация на FASM. |
Автор: Coder 24.7.2006, 04:53 | ||
почему компилятор Fasm выдает ошибку на такой строке:
как реализовать косвенную адресацию в FASM`e? |
Автор: Exekutor 24.7.2006, 08:27 |
Не только фасм, и тасм тоже. AX - это же регистр общего назначения. Воспользуйся регистрами SI или DI. |
Автор: sgi1981 29.7.2006, 18:47 | ||||
Потому что, при использовании 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-разрядном режиме. Оно намного лучше. |