Вот пример который должен вывести имя моего компа, в место этого какая то гадость. В чем проблемма? Code (Text): format PE GUI 4.0 include 'C:\Program Files\fasmw165\INCLUDE\win32ax.inc' .data WS WSADATA he hostent .code start: invoke WSAStartup,0101h,WS invoke gethostbyname, '' mov [he], eax invoke MessageBox,HWND_DESKTOP,[he.h_name] ,"Win32 Assembly",MB_OK ;вывожу на экроан invoke WSACleanup invoke ExitProcess,0 .end start
Code (Text): #include <winsock2.h> #include <stdio.h> #pragma hdrstop int main() { WSADATA wsa; struct hostent * he; WSAStartup(MAKEWORD(2, 0), &wsa); he = gethostbyname(NULL); if (he) { printf("%s\n", he->h_name); } WSACleanup(); } перевести на асм проблем имхо не состовляет: Code (Text): format PE GUI 4.0 include 'win32ax.inc' include 'macro\masm.inc' include 'my_include.inc' .bss wsa WSADATA he hostent .data msgbox_title db 'test', 0 .code start: push wsa push $101 call [WSAStartup] push 0 call [gethostbyname] xchg [he], eax push 0 push msgbox_title mov eax, [he.h_name] mov eax, [eax] push eax push 0 call [MessageBox] call [WSACleanup] push 0 call [ExitProcess] .end start
censored Интересный перевод у тебя: MAKEWORD(2,0) превращается в 0x0101. Тем более, что нужно MAKEWORD(0,2). maestro-ant Если включается win32ax, то format pe не нужен.
это не совсем перевод второй раз прокалываюсь с этой штукой. обменяли местами параметры, гады! раньше имхо было MAKEWORD(hi, lo)/MAKEDWORD(hi, lo)