Первый символ строки!

Тема в разделе "WASM.BEGINNERS", создана пользователем REALiSTiC, 10 апр 2007.

  1. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Пишу на MASM32.

    Скажите, как определить, что первый символ строки буква "C" ?

    Вот, например, я определяю длину:

    Код (Text):
    1. invoke GetClipboardData,CF_TEXT
    2. invoke lstrlen,eax
    3. .if eax == 13
    А как определить первый символ?
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    До вызова strlen:
    mov al, byte ptr eax
    cmp al, 'C'
    jne если_не_совпало

    адд:
    Вариантов есть несколько, я написал один из них
     
  3. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    ЭМ...

    error A2032: invalid use of register
     
  4. letika

    letika New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    28
    byte ptr[eax]
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а почему не сразу
    cmp byte ptr [eax], 'C'
     
  6. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Я честно напрягал мозг, но так и не вспомнил как же такое писалось в масме :)
     
  7. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Про GlobalLock не забудь, иначе в еах будет не указатель на строку, а хэндл HGLOBAL
     
  8. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Вообщем вот код:

    Код (Text):
    1. Проблема решена
    Компилит, но не проверяет.
     
  9. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    REALiSTiC
    Топиком выше (№7) прочти фразу leo.
    Код видим аж в двух местах, а где проверка?
     
  10. letika

    letika New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    28
    Это проверка, равна ли длина строки 13 символам.
     
  11. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    lstrlen определяет дину строки
    и сравнение eax - проверка на длину строки, а не на первый символ
    собсно, присоединяюсь к вопросу crypto: а где проверка на символ?
     
  12. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Я и говорю, что не могу сделать ее.
     
  13. Adrax

    Adrax Алексей

    Публикаций:
    0
    Регистрация:
    14 окт 2006
    Сообщения:
    135
    Адрес:
    г. Курск
    2 REALiSTiC
    Тебе же twgt писал:
    Код (Text):
    1. До вызова strlen:
    2. mov al, byte ptr eax
    3. cmp al, 'C'
    4. jne если_не_совпало
    Или сразу
    Код (Text):
    1. cmp byte ptr [eax], 'C'
    2. jne если_не_совпало
    По-другому ничего придумать не могу
     
  14. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    варианты
    Код (Text):
    1. 1)xor byte ptr [eax], 'C'
    2. jne если_не_совпало
    3. 2)sub byte ptr [eax], 'C'
    4. jne если_не_совпало
     
  15. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Mikl__
    Код (Text):
    1. mov al, [eax]
    2. neg al
    3. xor al, 0xcd
    4. cmp al, (-'C') xor 0xcd
    5. jne not_c
    ;)
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    предлагаю для красоты и полноты кода добавить пару штучек XCHG ECX, ECX :-] :-P
     
  17. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    А кто написал? :)
     
  18. Adrax

    Adrax Алексей

    Публикаций:
    0
    Регистрация:
    14 окт 2006
    Сообщения:
    135
    Адрес:
    г. Курск
    2 Mikl_, censored, Great
    Извращенцы...:)
     
  19. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Не пашет оно :dntknw:

    Код (Text):
    1. Проблема решена
    Что не так???
     
  20. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    REALiSTiC
    Н-да
    Код (Text):
    1. ...
    2. kkakfkdx:
    3. invoke MessageBox,NULL,addr dadwa,addr dakc,MB_OK
    4. ret
    5. end kkakfkdx
    6. ...
    остальное в твоем коде не выполняется. Читай в описании языка ассемблера про директиву end.