проблемы с repnz scasb

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

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    пытаюсь отпарсить командную строку(с для теста использую такие данные "1" "2" "3" )
    но вышла такая фигня
    в edi есть указатель на строку а repnz scasb ни как не реагирует, хотя до этого строки с подобным кодом отлично исполнились.
    код с repnz scasb
    Код (Text):
    1. call AllocConsole
    2.  push STD_OUTPUT_HANDLE
    3.  call GetStdHandle
    4.  mov dword ptr [hStdOut], eax
    5. call  GetCommandLine
    6.  mov edi,eax
    7.  mov al,34 ;кавычка
    8.  repnz scasb
    9.  repnz scasb
    10.  
    11.  repnz scasb
    12.  mov esi,edi
    13.  repnz scasb
    14.  mov ecx,edi
    15.  sub ecx,esi
    16.  push ecx
    17.  push esi
    18.  push offset File1
    19.  call copystr
    20.  
    21.  repnz scasb
    22.  mov esi,edi
    23.  repnz scasb
    24.  mov ecx,edi
    25.  sub ecx,esi
    26.  push ecx
    27.  push esi
    28.  push offset File1
    29.  call copystr
    а вот сама copystr
    Код (Text):
    1. copystr proc
    2.  push ebp
    3.  mov ebp,esp
    4.  push esi
    5.  push edi
    6.  push ecx
    7.    mov ecx,[ebp+16] ; length
    8.    mov esi,[ebp+12]
    9.    mov edi,[ebp+8] ;приемник
    10.   @rep:
    11.    stosb
    12.    dec ecx
    13.    inc esi
    14.    cmp ecx,0
    15.   jne @rep
    16.   pop ecx
    17.  pop edi
    18.  pop esi
    19.  pop ebp
    20.  ret 12
    21. copystr endp
    и ехе, я прикрепил в теме. проблема начинается с адреса 004013AD.
     
  2. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    А вочему файл не прикрепился ??(((
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    почему*
     
  4. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    XshStasX
    перед repnz scasb полагается инициализировать регистр ecx
     
  5. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    А чему он должен быть равен ??
     
  6. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    XshStasX
    Максимальному числу просмотренных байтов. RTFM
     
  7. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    +1
    перед префиксом rep выставляете флаг DF (std cld) как вам нужно а также ECX/CX