Проблемма с получением имени...

Тема в разделе "WASM.NETWORKS", создана пользователем maestro-ant, 4 сен 2006.

  1. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Вот пример который должен вывести имя моего компа, в место этого какая то гадость. В чем проблемма?

    Код (Text):
    1. format PE GUI 4.0
    2.  
    3. include 'C:\Program Files\fasmw165\INCLUDE\win32ax.inc'
    4.  
    5. .data
    6.   WS            WSADATA
    7.   he             hostent
    8.  
    9. .code
    10.  
    11. start:
    12.  
    13.   invoke WSAStartup,0101h,WS
    14.   invoke gethostbyname, ''
    15.   mov [he], eax
    16.   invoke  MessageBox,HWND_DESKTOP,[he.h_name] ,"Win32 Assembly",MB_OK   ;вывожу на экроан
    17.  
    18.   invoke WSACleanup
    19.   invoke  ExitProcess,0
    20. .end start
     
  2. clone

    clone New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    84
    MSDN
    maestro-ant
    Код (Text):
    1. invoke gethostbyname, 0
     
  3. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Код (Text):
    1. #include <winsock2.h>
    2. #include <stdio.h>
    3. #pragma hdrstop
    4.  
    5. int main() {
    6.   WSADATA wsa;
    7.   struct hostent * he;
    8.  
    9.   WSAStartup(MAKEWORD(2, 0), &wsa);
    10.   he = gethostbyname(NULL);
    11.   if (he) {
    12.     printf("%s\n", he->h_name);
    13.   }
    14.   WSACleanup();
    15. }
    перевести на асм проблем имхо не состовляет:
    Код (Text):
    1.                         format  PE GUI 4.0
    2.  
    3.                         include 'win32ax.inc'
    4.                         include 'macro\masm.inc'
    5.                         include 'my_include.inc'
    6.  
    7.                         .bss
    8.  
    9. wsa         WSADATA
    10. he          hostent
    11.  
    12.             .data
    13.  
    14. msgbox_title        db  'test', 0
    15.  
    16.                         .code
    17.  
    18. start: 
    19.             push    wsa
    20.             push    $101
    21.             call    [WSAStartup]
    22.  
    23.             push    0
    24.             call    [gethostbyname]
    25.             xchg    [he], eax
    26.  
    27.             push    0
    28.             push    msgbox_title
    29.             mov eax, [he.h_name]
    30.             mov eax, [eax]
    31.             push    eax
    32.             push    0
    33.             call    [MessageBox]
    34.  
    35.             call    [WSACleanup]
    36.  
    37.             push    0
    38.             call    [ExitProcess]
    39.  
    40.             .end    start
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    censored
    Интересный перевод у тебя: MAKEWORD(2,0) превращается в 0x0101. Тем более, что нужно MAKEWORD(0,2).

    maestro-ant
    Если включается win32ax, то format pe не нужен.
     
  5. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    это не совсем перевод
    второй раз прокалываюсь с этой штукой. обменяли местами параметры, гады! раньше имхо было MAKEWORD(hi, lo)/MAKEDWORD(hi, lo)
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    censored
    Поэтому проще 0x0200 написать, чем помнить, как работают эти макросы :)