Сравнение

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 16 мар 2009.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Есть одно значение DWORD и есть указатель на другой DWORD. Нужно сравнить эти два значения. Как это сделать в masm32?
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    можно так cmp EAX,[EBX]; EAX - Есть одно значение DWORD в EBX - указатель на другой DWORD
    а можно и так mov EBX,[EBX]/cmp EAX,EBX
     
  3. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    То, что нужно. Спасибо.
    А как быть если значения больше дворда, не строки? Ведь нельзя сравнивать [регистр] c переменной.
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    vg
    если значение больше DWORD можно 1) сравнивать в цикле по частям
    2) использовать FPU или MMX сравнения
    чтобы сравнить [регистр] c переменной можно либо содержимое [регистр], либо содержимое переменной поместить в регистр, а потом сравнивать :)
     
  5. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Можно пример?
    Да, я понял. Просто, если значение больше дворда, то регистра мало.
     
  6. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Есть еще команды CMPS*. А так вообще жестокая тема, глянул у автора под 400 сообщений на форуме, а с cmp незнаком. Да и при чем тут MASM.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    vg
    Код (Text):
    1. .data
    2. a dq ?
    3. b dq ?
    4. .code
    5.      mov ebx,4; (размер QWORD в байтах)/2
    6. a1: mov eax,dword ptr a[ebx]
    7.      cmp dword ptr b[ebx],eax
    8.      jnz a2; вывод сообщения "a не равно b"
    9.      sub ebx,4
    10.      jnc a1
     
  8. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Почему незнаком? Знаком. Вопрос был в [].
    Макросы.
    Подзабыл. Казалось больше для строк (с нулём на конце).
    Но посмотрел, похоже тоже подойдёт.