byte ptr[sr] возвращает 00h, а не символ

Тема в разделе "WASM.BEGINNERS", создана пользователем Werewolf_Prankster, 9 май 2010.

  1. Werewolf_Prankster

    Werewolf_Prankster New Member

    Публикаций:
    0
    Регистрация:
    9 май 2010
    Сообщения:
    3
    Есть код:
    Код (Text):
    1. mov ch,byte ptr[str2]
    str2 это указатель на массив символов:
    Код (Text):
    1. Buffer db BUFFSIZE dup(0)
    str2 точно адресс первого символа, но при выполнении команды, OllyDbg сообщает следующее
    Код (Text):
    1. ECX 77820000 PTR to ASCII "WTSUnRegisterSessionNotification"
    И в ch оказывается 00h, а не 55h, как должно быть. Причем что самое дурацкое, что при следующем смещени
    Код (Text):
    1. inc str2
    в ch появляется 01h, потом 02h, потом 03h... При этом еще и при выполнении
    Код (Text):
    1. mov byte ptr[str1],ch
    по адрессу str1 и последующим все равно нули и нули.
    Может я как-то не правильно работаю с массивом? Подскажите пожалуйста
     
  2. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    Код (Text):
    1. Buffer db BUFFSIZE dup(0)
    2. str2 WORD Buffer
    3.  
    4.  
    5. mov SI,str2
    6. mov CH,[SI]
    в 32битном режиме dword и esi соответственно
     
  3. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    Код (Text):
    1. mov ch,byte ptr[str2]
    всего лишь засылает самый младший байт адреса массива в ch
    квадратные скобки без регистра бессильны организовать косвенную адресацию
     
  4. Werewolf_Prankster

    Werewolf_Prankster New Member

    Публикаций:
    0
    Регистрация:
    9 май 2010
    Сообщения:
    3
    2Rockphorr

    Тоесть я должен сделать?
    Код (Text):
    1. mov eax,str2
    2. mov ch,byte ptr[eax]
     
  5. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    верно
     
  6. Werewolf_Prankster

    Werewolf_Prankster New Member

    Публикаций:
    0
    Регистрация:
    9 май 2010
    Сообщения:
    3
    И если можно еще вопрос, чтобы не засорять тему. Можно ли как-то определить длинну строки, например такого типа
    Код (Text):
    1. sUSERstr        db 'anonymous'
    или необходимо ставить символ окончания строки и считать вручную?
     
  7. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    sUSERstr db 'anonymous'
    just_after db ?


    lea AX,just_after
    lea BX,sUSERstr
    sub AX,BX
     
  8. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Код (Text):
    1. sUSERstr        db 'anonymous'
    2. len                ($-sUSERstr)-1
     
  9. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    вариант JCronuz - считать руками компилятора
     
  10. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    JCronuz

    а зачем -1 ?
     
  11. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    slavanap
    от нуля до n находиться n+1 чисел
     
  12. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    И?
     
  13. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    slavanap правильнее было спросить почему я там = или equ пропустил :) Зыбыл!

    Код (Text):
    1. stroka db "stroka",0
    2. len equ ($-stroka)-1