Fasm не прыгает на метку

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

  1. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    здрасьте ,товарищи ассемблерщики. мой ФАСМ не заставить прыгнуть на метку. сначала он не видел одну из меток (undefined symbol-пишет). после некоторых экспериментов (а именно : я передвинул ее поближе к тому месту где он выдал ошибку) он ее увидел, изчего я сделал вывод ,что он не видит меток на некотором расстоянии(дальше пятой - как я посчитал), но почему это происходит не понятно,ведь во многих примерах, где меток и побольше моего, все в порядке, да и в мануалах(я читаю русские) пишут чтоДОЛЖЕН видеть ВСЕ метки и до и после вызова(в общем случае):
    Код (Text):
    1. section '.code' code readable writeable executable
    2. start:
    3.  
    4.         push    0
    5.         call    [GetModuleHandle]
    6.         push    0
    7.         push    DialogProc
    8.         push    HWND_DESKTOP
    9.         push    1
    10.         push    eax
    11.         call    [DialogBoxParam]
    12.         cmp     eax,0
    13.         je      exit
    14.         push    0
    15.         push    caption
    16.         push    message
    17.         push    HWND_DESKTOP
    18.         call    [MessageBoxA]
    19.  
    20. exit:
    21.         push    0
    22.         call    [ExitProcess]
    23.  
    24. proc DialogProc hwnddlg,msg,wparam,lparam
    25.  
    26.         push    ebx esi edi
    27.         cmp     [msg],WM_COMMAND
    28.         je      .wmcommand
    29.         cmp     [msg],WM_CLOSE
    30.         je      .wmclose        ; вот тут говорит undefined symbol
    31.         xor     eax,eax
    32.         jmp     .finish
    33.  
    34. .wmcommand:
    35.         cmp     [wparam],BN_CLICKED shl 16+IDCANCEL
    36.         je      .wmclose
    37.         cmp     [wparam],BN_CLICKED shl 16+IDOK
    38.         jne     .processed
    39.         push    40h
    40.         push    buffer
    41.         push    1
    42.         push    [hwnddlg]
    43.         call    [GetDlgItemText]
    44.         cmp     eax,10h
    45.         jne     .processed
    46.         mov     ecx,eax
    47.  
    48. .itsloop:
    49.         test   ecx,ecx
    50.         je     cip
    51.         mov    al,byte ptr buffer
    52.         mov    ah,byte ptr pass
    53.         cmp    al,ah
    54.         inc    [buffer]
    55.         inc    [pass]
    56.         je     .itsloop
    57.         jmp    .processed
    58. cip:
    59.         cmp     al,ah
    60.         je      congr
    61.         pop edi esi ebx
    62.  
    63. congr:
    64.         push    0
    65.         push    congrcap
    66.         push    congrtxt
    67.         push    0
    68.         call    [MessageBoxA]
    69.         jmp     .finish
    70.  
    71. .wmclose:
    72.         push    0
    73.         push    [hwnddlg]
    74.         call    [EndDialog]
    75.  
    76. .processed:
    77.         mov     eax,1
    78.  
    79. .finish:
    80.         pop     edi esi ebx
    81.         ret
    82.  
    83. endp
    прошу не смотреть на логику, я тут многое подвигал-пораздвигал. для меня главное понять изза чего он ругается. заранее спасибо
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    чтож поиграем в одепта черной магии и попытаемся предсказать что ругаецо и не видит .wmclose... напишете congr.wmclose. аналогично остальное
     
  3. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    честно говоря не могу понять зачем... этож будет ни та ни другая метка
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    cip, congr перебивают метку .wmclose - читаем доки по фасму.
     
  5. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    ...........не понимаю почему он без точек не воспринимал метки. ща поставил точки в .congr и .cip и все заработало. спасибо фриман,всем спасибо