Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Косвенная адресация на FASM. проблемы... 
:(
    Опции темы
Coder
Дата 24.7.2006, 04:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



почему компилятор Fasm выдает ошибку на такой строке:
Код

mov [ax],4 


как реализовать косвенную адресацию в FASM`e? 
PM MAIL   Вверх
Exekutor
Дата 24.7.2006, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай

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



Не только фасм, и тасм тоже. AX - это же регистр общего назначения. Воспользуйся регистрами SI или DI.  


--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
sgi1981
Дата 29.7.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Coder @ 24.7.2006,  04:53)
почему компилятор Fasm выдает ошибку на такой строке:
Код

mov [ax],4 


как реализовать косвенную адресацию в FASM`e?

Потому что, при использовании 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


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

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

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


 




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


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

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