проблемы с repnz scasb

Discussion in 'WASM.BEGINNERS' started by XshStasX, May 22, 2010.

  1. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    пытаюсь отпарсить командную строку(с для теста использую такие данные "1" "2" "3" )
    но вышла такая фигня
    в edi есть указатель на строку а repnz scasb ни как не реагирует, хотя до этого строки с подобным кодом отлично исполнились.
    код с repnz scasb
    Code (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
    Code (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

    Blog Posts:
    0
    А вочему файл не прикрепился ??(((
     
  3. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    почему*
     
  4. KeSqueer

    KeSqueer Сергей

    Blog Posts:
    0
    XshStasX
    перед repnz scasb полагается инициализировать регистр ecx
     
  5. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    А чему он должен быть равен ??
     
  6. KeSqueer

    KeSqueer Сергей

    Blog Posts:
    0
    XshStasX
    Максимальному числу просмотренных байтов. RTFM
     
  7. Rockphorr

    Rockphorr Well-Known Member

    Blog Posts:
    0
    +1
    перед префиксом rep выставляете флаг DF (std cld) как вам нужно а также ECX/CX