Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 23:39   #1
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
Вопрос cmp и указатели

Надо сравнить два числа, хранящихся в памяти. eax и ebx - их указатели. Сделал вот так:
Код:
cmp [eax], [ebx]
FASM ругается - Error: invalid operand.
Или такая операция вообще недопустима, и можно сравнивать числа только в регистрах?
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 08.03.2011, 02:07   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Оба аргумента не могут быть адресами в памяти. Либо два регистра, либо память и регистр.
mov ebx, [ebx]
cmp [eax], ebx
Son Of Pain вне форума Ответить с цитированием
Старый 08.03.2011, 02:12   #3
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Спасибо. Теперь буду знать.
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 08.03.2011, 12:11   #4
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

вообще-то, можно, при условии, если адреса находятся в регистрах esi, edi.
Код:
cmpsd
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 08.03.2011, 22:07   #5
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Нашёл информацию про этот cmpsd, сделал следующее:

Код:
1: cld
2: mov ecx,2
3: lds esi,ebx
4: les edi,edx
5: repe cmpsd
При компиляции опять Invalid operand вылазит, теперь в строках 3 и 4. Ну а тут в чём проблема?
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 08.03.2011, 22:15   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

под Win32 пишите?
тогда просто
Код:
mov esi,ebx
mov edi,edx
сегменты не надо там менять.
а вообще помоему они требуют аргумент такого вида les esi,[ebx]
ведь их смысл почти как у lea
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.03.2011, 23:46   #7
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Благодарю за помощь!
CraZZZy-GameRRR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели GrihaI Общие вопросы C/C++ 11 06.05.2010 18:53
Что происходит на странице с такие JS: <script src="cmp.php?complete&amp;" id="las..." ...>? TwiX JavaScript, Ajax 0 05.02.2010 17:38
Указатели Paul_AG Общие вопросы C/C++ 5 03.07.2009 14:22
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39