Programación General > ASM (Ensamblador)

 ¿no Ensambla Este Codigo? :(

(1/1)

Rozor:
Hola, he estado codeando con masm32 y siendo correcta la sintaxis segun numentor y otros codes que he echo y me da error :S , me da error en las estructuras WSADATA y SOCKADDR_IN. Aver que se puede hacer gracias.

He lido varias veces post de asm en este foro, y desarrollado como por ejemplo cuando lo del bootstrap. Y hoy me decidi a postear :P


Error:


--- Código: Text --- Microsoft (R) Macro Assembler Version 6.14.8444Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.  Assembling: C:\masm32\conexion.asmC:\masm32\conexion.asm(30) : error A2008: syntax error : wsaC:\masm32\conexion.asm(31) : error A2008: syntax error : sin_Assembly ErrorPresione una tecla para continuar . . .  




El codigo fuente:


--- Código: Text --- .586P.MODEL FLAT, STDCALL   include \masm32\include\wsock32.incinclude \masm32\include\kernel32.incinclude \masm32\include\user32.inc includelib \masm32\lib\wsock32.libincludelib \masm32\lib\kernel32.libincludelib \masm32\lib\user32.lib    CrearConexion protoEnviarMensage protoError proto       .DATA    wsa WSADATA <>  &#59; <--- ERROR  Linea 30    sin SOCKADDR_IN <> &#59; <--- ERROR Linea 31    ip dq 0100007Fh   port dd 9a02h    buffsend db "#### barata", 0   cap db "Error", 0   txt db "Error no enviado", 0   cap2 db "Adios", 0   txt2 db "A funcado bien xDDD", 0    .DATA?    sock dd ?     .CONST     protocolo dd 06h&#59; IPPROTO_TCP   familia dd 02h &#59; AF_INET   stream dd 01h  &#59; SOCK_STREAM   sizesin dd 10h &#59; sizeof sockaddr_in   make dd 101h   &#59; MAKEWORD(1,1)   wm_sock dd 464h&#59; WM_SOCKET = WM_USER+100   f_connect dd 10h &#59; FD_CONNECT   f_read dd 01h    &#59; FD_READ   f_close dd 20h   &#59; FD_CLOSE   f_all dd 31h     &#59; Suma de los 3  .CODE     Inicio:                  xor eax, eax                call CrearConexion                 push 00h                push offset cap                push offset txt                push 00h                call MessageBoxA                 push sock                call closesocket                 call WSACleanup                 push 00h                call ExitProcess           end Inicio       CrearConexion proto                 push offset wsa                push offset make                call WSAStartup                 push offset protocolo                push offset stream                push offset familia                call socket                mov sock, eax                  push offset f_all                push offset wm_sock                push 00h                push sock                call WSAAsyncSelect                                           mov sin.sin_family, offset familia                mov sin.sin_port, offset puerto                mov sin.sin_addr, offset ip                  push offset sizesin                push offset sin                push offset sock                call connect                je EnviarMensage                jnz Error                ret&#59; w0w   CrearConexion endp      EnviarMensage proto                 push 00h                push 15                push offset sendbuff                push offset sock                call send                ret   EnviarMensage endp      Error proto                 push 00h                push offset cap                push offset txt                push 00h                call MessageBoxA                 push 00h                call ExitProcess                 leave                ret&#59; w0w                  Error endp  

Gracias.

Eternal Idol:
Esas estructuras no estan definidas en ninguno de los includes que usas. Estan en windows.inc y la segunda es con minusculas (sockaddr_in).

Averigua en la ayuda como incluir ese archivo.

Rozor:
Si perdonen por el post, tenia windows.inc y lo quite por que tenia fallo luego no me acorde y no me di cuenta jejejej, reinstale y compilo sin problemas.

Por cierto, el codigo arreglado, ya no me funciona pero a nivel ejecucion, he debugeado y todo va bien hasta "connect", hay falla no pillo el por que :S . ( no es culpa del servidor ).



--- Código: Text --- 586p.model flat, stdcalloption casemap:none  include \masm32\include\wsock32.incinclude \masm32\include\kernel32.incinclude \masm32\include\user32.incinclude \masm32\include\windows.inc includelib \masm32\lib\wsock32.libincludelib \masm32\lib\kernel32.libincludelib \masm32\lib\user32.lib    CrearConexion protoEnviarMensage protoError proto   .data    wsa WSADATA <>   sin sockaddr_in <>    ip db "127.0.0.1", 0     port dd 666   buffsend db "#### barata", 0   cap db "Error", 0   txt db "Error no enviado", 0   cap2 db "Adios", 0   txt2 db "A funcado bien xDDD", 0    .data?   sock dd ?  hand dd ?      .const    protocolo dd 06h&#59; IPPROTO_TCP   familia dd 02h &#59; AF_INET   stream dd 01h  &#59; SOCK_STREAM   sizesin dd 10h &#59; sizeof sockaddr_in   make dw 101h   &#59; MAKEWORD(1,1)   wm_sock dd WM_USER+100&#59; WM_SOCKET = WM_USER+100   f_connect dd 10h &#59; FD_CONNECT   f_read dd 01h    &#59; FD_READ   f_close dd 20h   &#59; FD_CLOSE   f_all dd 31h     &#59; Suma de los 3  .code     Inicio:                  xor eax, eax                call CrearConexion                 push 00h                push offset cap                push offset txt                push 00h                call MessageBoxA                 push sock                call closesocket                 call WSACleanup                 push 00h                call ExitProcess                 CrearConexion proc                 push offset wsa                push 101h                call WSAStartup                 push 0                push SOCK_STREAM                push AF_INET                call socket                mov sock, eax                .if eax==INVALID_SOCKET                   call Error                .endif                  push FD_READ+FD_WRITE+FD_CONNECT                push offset wm_sock                push offset hand                push sock                call WSAAsyncSelect                                           mov sin.sin_family, 02h                push 29ah                call htons                mov sin.sin_port, ax                push offset ip                call inet_addr                mov sin.sin_addr, eax                  push sizeof sin                mov eax, offset sin                push eax                push offset sock                call connect                .if eax==SOCKET_ERROR                    call Error                .endif                call EnviarMensage                ret&#59; w0w   CrearConexion endp      EnviarMensage proc                 push 00h                push 15                push offset buffsend                push offset sock                call send                ret   EnviarMensage endp      Error proc                 push 00h                push offset cap                push offset txt                push 00h                call MessageBoxA                 push 00h                call ExitProcess                 leave                ret&#59; w0w                  Error endp   end Inicio   

Eternal Idol:
hand ... ¿Para que arrancas con sockets asincronos? Mejor hacelo funcionar con sincronos primero.

Navegación

[0] Índice de Mensajes

Ir a la versión completa